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
918918 S: K1N 6Z9
919919 S: CANADA
920920
921+N: Vivien Didelot
922+E: vivien.didelot@gmail.com
923+D: DSA framework and MV88E6XXX driver
924+S: Montreal, Quebec, Canada
925+
921926 N: Jeff Dike
922927 E: jdike@karaya.com
923928 W: 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
6767 copied to another memory location before use.
6868
6969 A use of uninitialized value ``v`` is reported by KMSAN in the following cases:
70+
7071 - in a condition, e.g. ``if (v) { ... }``;
7172 - in an indexing or pointer dereferencing, e.g. ``array[v]`` or ``*v``;
7273 - 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
1515
1616 properties:
1717 compatible:
18− enum:
19− - qcom,sfpb-mutex
20− - qcom,tcsr-mutex
18+ oneOf:
19+ - enum:
20+ - 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
2134
2235 reg:
2336 maxItems: 1
@@ -34,9 +47,9 @@ additionalProperties: false · 10 unmodified lines
3447
3548 examples:
3649 - |
37− tcsr_mutex: hwlock@1f40000 {
38− compatible = "qcom,tcsr-mutex";
39− reg = <0x01f40000 0x40000>;
40− #hwlock-cells = <1>;
41− };
50+ hwlock@1f40000 {
51+ compatible = "qcom,tcsr-mutex";
52+ reg = <0x01f40000 0x40000>;
53+ #hwlock-cells = <1>;
54+ };
4255 ...
Documentation/devicetree/bindings/net/engleder,tsnep.yaml+1−1
@@ -47,7 +47,7 @@ properties: · 46 unmodified lines
4747
4848 nvmem-cells: true
4949
50− nvmem-cells-names: true
50+ nvmem-cell-names: true
5151
5252 phy-connection-type:
5353 enum:
Documentation/virt/kvm/devices/vm.rst+3−0
@@ -215,6 +215,7 @@ KVM_S390_VM_TOD_EXT). · 214 unmodified lines
215215 :Parameters: address of a buffer in user space to store the data (u8) to
216216 :Returns: -EFAULT if the given address is not accessible from kernel space;
217217 -EINVAL if setting the TOD clock extension to != 0 is not supported
218+ -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor)
218219
219220 3.2. ATTRIBUTE: KVM_S390_VM_TOD_LOW
220221 -----------------------------------
@@ -224,6 +225,7 @@ the POP (u64). · 3 unmodified lines
224225
225226 :Parameters: address of a buffer in user space to store the data (u64) to
226227 :Returns: -EFAULT if the given address is not accessible from kernel space
228+ -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor)
227229
228230 3.3. ATTRIBUTE: KVM_S390_VM_TOD_EXT
229231 -----------------------------------
@@ -237,6 +239,7 @@ it, it is stored as 0 and not allowed to be set to a value != 0. · 7 unmodified lines
237239 (kvm_s390_vm_tod_clock) to
238240 :Returns: -EFAULT if the given address is not accessible from kernel space;
239241 -EINVAL if setting the TOD clock extension to != 0 is not supported
242+ -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor)
240243
241244 4. GROUP: KVM_S390_VM_CRYPTO
242245 ============================
MAINTAINERS+2−5
@@ -8602,8 +8602,8 @@ F: include/asm-generic/ · 8601 unmodified lines
86028602 F: include/uapi/asm-generic/
86038603
86048604 GENERIC PHY FRAMEWORK
8605−M: Kishon Vijay Abraham I <kishon@ti.com>
86068605 M: Vinod Koul <vkoul@kernel.org>
8606+M: Kishon Vijay Abraham I <kishon@kernel.org>
86078607 L: linux-phy@lists.infradead.org
86088608 S: Supported
86098609 Q: https://patchwork.kernel.org/project/linux-phy/list/
@@ -9341,7 +9341,7 @@ S: Maintained · 731 unmodified lines
93419341 F: drivers/crypto/hisilicon/trng/trng.c
93429342
93439343 HISILICON V3XX SPI NOR FLASH Controller Driver
9344−M: John Garry <john.garry@huawei.com>
9344+M: Jay Fang <f.fangjian@huawei.com>
93459345 S: Maintained
93469346 W: http://www.hisilicon.com
93479347 F: drivers/spi/spi-hisi-sfc-v3xx.c
@@ -9507,7 +9507,6 @@ F: drivers/media/i2c/hi847.c · 159 unmodified lines
95079507 Hyper-V/Azure CORE AND DRIVERS
95089508 M: "K. Y. Srinivasan" <kys@microsoft.com>
95099509 M: Haiyang Zhang <haiyangz@microsoft.com>
9510−M: Stephen Hemminger <sthemmin@microsoft.com>
95119510 M: Wei Liu <wei.liu@kernel.org>
95129511 M: Dexuan Cui <decui@microsoft.com>
95139512 L: linux-hyperv@vger.kernel.org
@@ -12226,7 +12225,6 @@ F: arch/mips/boot/dts/img/pistachio* · 2712 unmodified lines
1222612225
1222712226 MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER
1222812227 M: Andrew Lunn <andrew@lunn.ch>
12229−M: Vivien Didelot <vivien.didelot@gmail.com>
1223012228 L: netdev@vger.kernel.org
1223112229 S: Maintained
1223212230 F: Documentation/devicetree/bindings/net/dsa/marvell.txt
@@ -14324,7 +14322,6 @@ F: drivers/net/wireless/ · 2091 unmodified lines
1432414322
1432514323 NETWORKING [DSA]
1432614324 M: Andrew Lunn <andrew@lunn.ch>
14327−M: Vivien Didelot <vivien.didelot@gmail.com>
1432814325 M: Florian Fainelli <f.fainelli@gmail.com>
1432914326 M: Vladimir Oltean <olteanv@gmail.com>
1433014327 S: Maintained
Makefile+1−1
@@ -2,7 +2,7 @@ · 1 unmodified line
22 VERSION = 6
33 PATCHLEVEL = 1
44 SUBLEVEL = 0
5−EXTRAVERSION = -rc4
5+EXTRAVERSION = -rc5
66 NAME = Hurr durr I'ma ninja sloth
77
88 # *DOCUMENTATION*
arch/arm64/include/asm/cputype.h+1−1
@@ -41,7 +41,7 @@ · 40 unmodified lines
4141 (((midr) & MIDR_IMPLEMENTOR_MASK) >> MIDR_IMPLEMENTOR_SHIFT)
4242
4343 #define MIDR_CPU_MODEL(imp, partnum) \
44− (((imp) << MIDR_IMPLEMENTOR_SHIFT) | \
44+ ((_AT(u32, imp) << MIDR_IMPLEMENTOR_SHIFT) | \
4545 (0xf << MIDR_ARCHITECTURE_SHIFT) | \
4646 ((partnum) << MIDR_PARTNUM_SHIFT))
4747
arch/arm64/include/asm/syscall_wrapper.h+1−1
@@ -8,7 +8,7 @@ · 7 unmodified lines
88 #ifndef __ASM_SYSCALL_WRAPPER_H
99 #define __ASM_SYSCALL_WRAPPER_H
1010
11−struct pt_regs;
11+#include <asm/ptrace.h>
1212
1313 #define SC_ARM64_REGS_TO_ARGS(x, ...) \
1414 __MAP(x,__SC_ARGS \
arch/arm64/kernel/efi.c+34−18
@@ -13,6 +13,14 @@ · 12 unmodified lines
1313
1414 #include <asm/efi.h>
1515
16+static 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+
1624 /*
1725 * Only regions of type EFI_RUNTIME_SERVICES_CODE need to be
1826 * 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
2634 if (type == EFI_MEMORY_MAPPED_IO)
2735 return PROT_DEVICE_nGnRE;
2836
29− if (WARN_ONCE(!PAGE_ALIGNED(md->phys_addr),
30− "UEFI Runtime regions are not aligned to 64 KB -- buggy firmware?"))
37+ if (region_is_misaligned(md)) {
38+ static bool __initdata code_is_misaligned;
39+
3140 /*
32− * If the region is not aligned to the page size of the OS, we
33− * can not use strict permissions, since that would also affect
34− * the mapping attributes of the adjacent regions.
41+ * Regions that are not aligned to the OS page size cannot be
42+ * mapped with strict permissions, as those might interfere
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.
3547 */
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+ }
3753
3854 /* R-- */
3955 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
6480 bool page_mappings_only = (md->type == EFI_RUNTIME_SERVICES_CODE ||
6581 md->type == EFI_RUNTIME_SERVICES_DATA);
6682
67− if (!PAGE_ALIGNED(md->phys_addr) ||
68− !PAGE_ALIGNED(md->num_pages << EFI_PAGE_SHIFT)) {
69− /*
70− * If the end address of this region is not aligned to page
71− * size, the mapping is rounded up, and may end up sharing a
72− * page frame with the next UEFI memory region. If we create
73− * a block entry now, we may need to split it again when mapping
74− * the next region, and support for that is going to be removed
75− * from the MMU routines. So avoid block mappings altogether in
76− * that case.
77− */
83+ /*
84+ * If this region is not aligned to the page size used by the OS, the
85+ * mapping will be rounded outwards, and may end up sharing a page
86+ * frame with an adjacent runtime memory region. Given that the page
87+ * table descriptor covering the shared page will be rewritten when the
88+ * adjacent region gets mapped, we must avoid block mappings here so we
89+ * don't have to worry about splitting them when that happens.
90+ */
91+ if (region_is_misaligned(md))
7892 page_mappings_only = true;
79− }
8093
8194 create_pgd_mapping(mm, md->phys_addr, md->virt_addr,
8295 md->num_pages << EFI_PAGE_SHIFT,
@@ -103,6 +116,9 @@ int __init efi_set_mapping_permissions(struct mm_struct *mm, · 20 unmodified lines
103116 BUG_ON(md->type != EFI_RUNTIME_SERVICES_CODE &&
104117 md->type != EFI_RUNTIME_SERVICES_DATA);
105118
119+ if (region_is_misaligned(md))
120+ return 0;
121+
106122 /*
107123 * Calling apply_to_page_range() is only safe on regions that are
108124 * 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
2626 * mapped at page granularity, so that it is possible to
2727 * protect/unprotect single pages.
2828 */
29− return rodata_full || debug_pagealloc_enabled() ||
29+ return (rodata_enabled && rodata_full) || debug_pagealloc_enabled() ||
3030 IS_ENABLED(CONFIG_KFENCE);
3131 }
3232
@@ -102,7 +102,8 @@ static int change_memory_common(unsigned long addr, int numpages, · 69 unmodified lines
102102 * If we are manipulating read-only permissions, apply the same
103103 * change to the linear mapping of the pages that back this VM area.
104104 */
105− if (rodata_full && (pgprot_val(set_mask) == PTE_RDONLY ||
105+ if (rodata_enabled &&
106+ rodata_full && (pgprot_val(set_mask) == PTE_RDONLY ||
106107 pgprot_val(clear_mask) == PTE_RDONLY)) {
107108 for (i = 0; i < area->nr_pages; i++) {
108109 __change_memory_common((u64)page_address(area->pages[i]),
arch/mips/alchemy/common/gpiolib.c+1−1
@@ -31,7 +31,7 @@ · 30 unmodified lines
3131 #include <linux/init.h>
3232 #include <linux/kernel.h>
3333 #include <linux/types.h>
34−#include <linux/gpio.h>
34+#include <linux/gpio/driver.h>
3535 #include <asm/mach-au1x00/gpio-au1000.h>
3636 #include <asm/mach-au1x00/gpio-au1300.h>
3737
arch/mips/boot/compressed/decompress.c+1−0
@@ -9,6 +9,7 @@ · 8 unmodified lines
99
1010 #define DISABLE_BRANCH_PROFILING
1111
12+#define __NO_FORTIFY
1213 #include <linux/types.h>
1314 #include <linux/kernel.h>
1415 #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
2626 extern void fw_meminit(void);
2727 extern char *fw_getenv(char *name);
2828 extern unsigned long fw_getenvl(char *name);
29−extern void fw_init_early_console(char port);
29+extern void fw_init_early_console(void);
3030
3131 #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
5656 * The branch offset must fit in the instruction's 26
5757 * bit field.
5858 */
59− WARN_ON((offset >= BIT(25)) ||
59+ WARN_ON((offset >= (long)BIT(25)) ||
6060 (offset < -(long)BIT(25)));
6161
6262 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
145145 * kexec_args[0..3] are used to prepare register values.
146146 */
147147
148−kexec_args:
149− EXPORT(kexec_args)
148+EXPORT(kexec_args)
150149 arg0: PTR_WD 0x0
151150 arg1: PTR_WD 0x0
152151 arg2: PTR_WD 0x0
@@ -159,8 +158,7 @@ arg3: PTR_WD 0x0 · 6 unmodified lines
159158 * their registers a0-a3. secondary_kexec_args[0..3] are used
160159 * to prepare register values.
161160 */
162−secondary_kexec_args:
163− EXPORT(secondary_kexec_args)
161+EXPORT(secondary_kexec_args)
164162 s_arg0: PTR_WD 0x0
165163 s_arg1: PTR_WD 0x0
166164 s_arg2: PTR_WD 0x0
@@ -171,19 +169,16 @@ kexec_flag: · 4 unmodified lines
171169
172170 #endif
173171
174−kexec_start_address:
175− EXPORT(kexec_start_address)
172+EXPORT(kexec_start_address)
176173 PTR_WD 0x0
177174 .size kexec_start_address, PTRSIZE
178175
179−kexec_indirection_page:
180− EXPORT(kexec_indirection_page)
176+EXPORT(kexec_indirection_page)
181177 PTR_WD 0
182178 .size kexec_indirection_page, PTRSIZE
183179
184180 relocate_new_kernel_end:
185181
186−relocate_new_kernel_size:
187− EXPORT(relocate_new_kernel_size)
182+EXPORT(relocate_new_kernel_size)
188183 PTR_WD relocate_new_kernel_end - relocate_new_kernel
189184 .size relocate_new_kernel_size, PTRSIZE
arch/mips/loongson64/reset.c+10−0
@@ -16,6 +16,7 @@ · 15 unmodified lines
1616 #include <asm/bootinfo.h>
1717 #include <asm/idle.h>
1818 #include <asm/reboot.h>
19+#include <asm/bug.h>
1920
2021 #include <loongson.h>
2122 #include <boot_param.h>
@@ -159,8 +160,17 @@ static int __init mips_reboot_setup(void) · 137 unmodified lines
159160
160161 #ifdef CONFIG_KEXEC
161162 kexec_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
163+ if (WARN_ON(!kexec_argv))
164+ return -ENOMEM;
165+
162166 kdump_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
167+ if (WARN_ON(!kdump_argv))
168+ return -ENOMEM;
169+
163170 kexec_envp = kmalloc(KEXEC_ENVP_SIZE, GFP_KERNEL);
171+ if (WARN_ON(!kexec_envp))
172+ return -ENOMEM;
173+
164174 fw_arg1 = KEXEC_ARGV_ADDR;
165175 memcpy(kexec_envp, (void *)fw_arg2, KEXEC_ENVP_SIZE);
166176
arch/mips/pic32/pic32mzda/early_console.c+6−7
@@ -27,7 +27,7 @@ · 26 unmodified lines
2727 #define U_BRG(x) (UART_BASE(x) + 0x40)
2828
2929 static void __iomem *uart_base;
30−static char console_port = -1;
30+static int console_port = -1;
3131
3232 static int __init configure_uart_pins(int port)
3333 {
@@ -47,7 +47,7 @@ static int __init configure_uart_pins(int port) · 13 unmodified lines
4747 return 0;
4848 }
4949
50−static void __init configure_uart(char port, int baud)
50+static void __init configure_uart(int port, int baud)
5151 {
5252 u32 pbclk;
5353
@@ -60,7 +60,7 @@ static void __init configure_uart(char port, int baud) · 6 unmodified lines
6060 uart_base + PIC32_SET(U_STA(port)));
6161 }
6262
63−static void __init setup_early_console(char port, int baud)
63+static void __init setup_early_console(int port, int baud)
6464 {
6565 if (configure_uart_pins(port))
6666 return;
@@ -130,16 +130,15 @@ _out: · 63 unmodified lines
130130 return baud;
131131 }
132132
133−void __init fw_init_early_console(char port)
133+void __init fw_init_early_console(void)
134134 {
135135 char *arch_cmdline = pic32_getcmdline();
136− int baud = -1;
136+ int baud, port;
137137
138138 uart_base = ioremap(PIC32_BASE_UART, 0xc00);
139139
140140 baud = get_baud_from_cmdline(arch_cmdline);
141− if (port == -1)
142− port = get_port_from_cmdline(arch_cmdline);
141+ port = get_port_from_cmdline(arch_cmdline);
143142
144143 if (port == -1)
145144 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
4747 strscpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE);
4848
4949 #ifdef CONFIG_EARLY_PRINTK
50− fw_init_early_console(-1);
50+ fw_init_early_console();
5151 #endif
5252 pic32_config_init();
5353 }
arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts+38−0
@@ -3,6 +3,8 @@ · 2 unmodified lines
33
44 #include "fu540-c000.dtsi"
55 #include <dt-bindings/gpio/gpio.h>
6+#include <dt-bindings/leds/common.h>
7+#include <dt-bindings/pwm/pwm.h>
68
79 /* Clock frequency (in Hz) of the PCB crystal for rtcclk */
810 #define RTCCLK_FREQ 1000000
@@ -42,6 +44,42 @@ · 33 unmodified lines
4244 compatible = "gpio-restart";
4345 gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
4446 };
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+ };
4583 };
4684
4785 &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
164164 unsigned long tls = args->tls;
165165 struct pt_regs *childregs = task_pt_regs(p);
166166
167+ memset(&p->thread.s, 0, sizeof(p->thread.s));
168+
167169 /* p->thread holds context to be restored by __switch_to() */
168170 if (unlikely(args->fn)) {
169171 /* Kernel thread */
arch/riscv/kernel/setup.c+1−0
@@ -283,6 +283,7 @@ void __init setup_arch(char **cmdline_p) · 282 unmodified lines
283283 else
284284 pr_err("No DTB found in kernel mappings\n");
285285 #endif
286+ early_init_fdt_scan_reserved_mem();
286287 misc_mem_init();
287288
288289 init_resources();
arch/riscv/kernel/vdso/Makefile+4−1
@@ -28,9 +28,12 @@ obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) · 27 unmodified lines
2828
2929 obj-y += vdso.o
3030 CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
31+ifneq ($(filter vgettimeofday, $(vdso-syms)),)
32+CPPFLAGS_vdso.lds += -DHAS_VGETTIMEOFDAY
33+endif
3134
3235 # Disable -pg to prevent insert call site
33−CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os
36+CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE)
3437
3538 # Disable profiling and instrumentation for VDSO code
3639 GCOV_PROFILE := n
arch/riscv/kernel/vdso/vdso.lds.S+2−0
@@ -68,9 +68,11 @@ VERSION · 67 unmodified lines
6868 LINUX_4.15 {
6969 global:
7070 __vdso_rt_sigreturn;
71+#ifdef HAS_VGETTIMEOFDAY
7172 __vdso_gettimeofday;
7273 __vdso_clock_gettime;
7374 __vdso_clock_getres;
75+#endif
7476 __vdso_getcpu;
7577 __vdso_flush_icache;
7678 local: *;
arch/riscv/mm/init.c+0−1
@@ -262,7 +262,6 @@ static void __init setup_bootmem(void) · 261 unmodified lines
262262 memblock_reserve(dtb_early_pa, fdt_totalsize(dtb_early_va));
263263 }
264264
265− early_init_fdt_scan_reserved_mem();
266265 dma_contiguous_reserve(dma32_phys_limit);
267266 if (IS_ENABLED(CONFIG_64BIT))
268267 hugetlb_cma_reserve(PUD_SHIFT - PAGE_SHIFT);
arch/s390/Kconfig+3−3
@@ -568,8 +568,7 @@ config EXPOLINE_FULL · 567 unmodified lines
568568 endchoice
569569
570570 config RELOCATABLE
571− bool "Build a relocatable kernel"
572− default y
571+ def_bool y
573572 help
574573 This builds a kernel image that retains relocation information
575574 so it can be loaded at an arbitrary address.
@@ -578,10 +577,11 @@ config RELOCATABLE · 2 unmodified lines
578577 bootup process.
579578 The relocations make the kernel image about 15% larger (compressed
580579 10%), but are discarded at runtime.
580+ Note: this option exists only for documentation purposes, please do
581+ not remove it.
581582
582583 config RANDOMIZE_BASE
583584 bool "Randomize the address of the kernel image (KASLR)"
584− depends on RELOCATABLE
585585 default y
586586 help
587587 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
1414 KBUILD_CFLAGS_MODULE += -fPIC
1515 KBUILD_AFLAGS += -m64
1616 KBUILD_CFLAGS += -m64
17−ifeq ($(CONFIG_RELOCATABLE),y)
1817 KBUILD_CFLAGS += -fPIE
1918 LDFLAGS_vmlinux := -pie
20−endif
2119 aflags_dwarf := -Wa,-gdwarf-2
2220 KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__
2321 ifndef 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
3737
3838 obj-y := head.o als.o startup.o mem_detect.o ipl_parm.o ipl_report.o
3939 obj-y += string.o ebcdic.o sclp_early_core.o mem.o ipl_vmparm.o cmdline.o
40−obj-y += version.o pgm_check_info.o ctype.o ipl_data.o
40+obj-y += version.o pgm_check_info.o ctype.o ipl_data.o machine_kexec_reloc.o
4141 obj-$(findstring y, $(CONFIG_PROTECTED_VIRTUALIZATION_GUEST) $(CONFIG_PGSTE)) += uv.o
42−obj-$(CONFIG_RELOCATABLE) += machine_kexec_reloc.o
4342 obj-$(CONFIG_RANDOMIZE_BASE) += kaslr.o
4443 obj-y += $(if $(CONFIG_KERNEL_UNCOMPRESSED),,decompressor.o) info.o
4544 obj-$(CONFIG_KERNEL_ZSTD) += clz_ctz.o
arch/s390/boot/startup.c+1−2
@@ -291,8 +291,7 @@ void startup_kernel(void) · 290 unmodified lines
291291
292292 clear_bss_section();
293293 copy_bootdata();
294− if (IS_ENABLED(CONFIG_RELOCATABLE))
295− handle_relocs(__kaslr_offset);
294+ handle_relocs(__kaslr_offset);
296295
297296 if (__kaslr_offset) {
298297 /*
arch/s390/configs/btf.config+1−0
@@ -0,0 +1 @@
1+CONFIG_DEBUG_INFO_BTF=y
arch/s390/configs/debug_defconfig+32−33
@@ -723,52 +723,42 @@ CONFIG_CRYPTO_ECDSA=m · 722 unmodified lines
723723 CONFIG_CRYPTO_ECRDSA=m
724724 CONFIG_CRYPTO_SM2=m
725725 CONFIG_CRYPTO_CURVE25519=m
726−CONFIG_CRYPTO_GCM=y
727−CONFIG_CRYPTO_CHACHA20POLY1305=m
728−CONFIG_CRYPTO_AEGIS128=m
729−CONFIG_CRYPTO_SEQIV=y
730−CONFIG_CRYPTO_CFB=m
731−CONFIG_CRYPTO_LRW=m
732−CONFIG_CRYPTO_PCBC=m
733−CONFIG_CRYPTO_KEYWRAP=m
734−CONFIG_CRYPTO_ADIANTUM=m
735−CONFIG_CRYPTO_HCTR2=m
736−CONFIG_CRYPTO_XCBC=m
737−CONFIG_CRYPTO_VMAC=m
738−CONFIG_CRYPTO_CRC32=m
739−CONFIG_CRYPTO_CRC32_S390=y
740−CONFIG_CRYPTO_MD4=m
741−CONFIG_CRYPTO_MD5=y
742−CONFIG_CRYPTO_MICHAEL_MIC=m
743−CONFIG_CRYPTO_RMD160=m
744−CONFIG_CRYPTO_SHA512_S390=m
745−CONFIG_CRYPTO_SHA1_S390=m
746−CONFIG_CRYPTO_SHA256_S390=m
747−CONFIG_CRYPTO_SHA3=m
748−CONFIG_CRYPTO_SHA3_256_S390=m
749−CONFIG_CRYPTO_SHA3_512_S390=m
750−CONFIG_CRYPTO_SM3_GENERIC=m
751−CONFIG_CRYPTO_WP512=m
752−CONFIG_CRYPTO_GHASH_S390=m
753726 CONFIG_CRYPTO_AES_TI=m
754−CONFIG_CRYPTO_AES_S390=m
755727 CONFIG_CRYPTO_ANUBIS=m
756−CONFIG_CRYPTO_ARC4=m
728+CONFIG_CRYPTO_ARIA=m
757729 CONFIG_CRYPTO_BLOWFISH=m
758730 CONFIG_CRYPTO_CAMELLIA=m
759731 CONFIG_CRYPTO_CAST5=m
760732 CONFIG_CRYPTO_CAST6=m
761733 CONFIG_CRYPTO_DES=m
762−CONFIG_CRYPTO_DES_S390=m
763734 CONFIG_CRYPTO_FCRYPT=m
764735 CONFIG_CRYPTO_KHAZAD=m
765−CONFIG_CRYPTO_CHACHA_S390=m
766736 CONFIG_CRYPTO_SEED=m
767−CONFIG_CRYPTO_ARIA=m
768737 CONFIG_CRYPTO_SERPENT=m
769738 CONFIG_CRYPTO_SM4_GENERIC=m
770739 CONFIG_CRYPTO_TEA=m
771740 CONFIG_CRYPTO_TWOFISH=m
741+CONFIG_CRYPTO_ADIANTUM=m
742+CONFIG_CRYPTO_ARC4=m
743+CONFIG_CRYPTO_CFB=m
744+CONFIG_CRYPTO_HCTR2=m
745+CONFIG_CRYPTO_KEYWRAP=m
746+CONFIG_CRYPTO_LRW=m
747+CONFIG_CRYPTO_PCBC=m
748+CONFIG_CRYPTO_AEGIS128=m
749+CONFIG_CRYPTO_CHACHA20POLY1305=m
750+CONFIG_CRYPTO_GCM=y
751+CONFIG_CRYPTO_SEQIV=y
752+CONFIG_CRYPTO_MD4=m
753+CONFIG_CRYPTO_MD5=y
754+CONFIG_CRYPTO_MICHAEL_MIC=m
755+CONFIG_CRYPTO_RMD160=m
756+CONFIG_CRYPTO_SHA3=m
757+CONFIG_CRYPTO_SM3_GENERIC=m
758+CONFIG_CRYPTO_VMAC=m
759+CONFIG_CRYPTO_WP512=m
760+CONFIG_CRYPTO_XCBC=m
761+CONFIG_CRYPTO_CRC32=m
772762 CONFIG_CRYPTO_842=m
773763 CONFIG_CRYPTO_LZ4=m
774764 CONFIG_CRYPTO_LZ4HC=m
@@ -779,6 +769,16 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m · 4 unmodified lines
779769 CONFIG_CRYPTO_USER_API_RNG=m
780770 CONFIG_CRYPTO_USER_API_AEAD=m
781771 CONFIG_CRYPTO_STATS=y
772+CONFIG_CRYPTO_CRC32_S390=y
773+CONFIG_CRYPTO_SHA512_S390=m
774+CONFIG_CRYPTO_SHA1_S390=m
775+CONFIG_CRYPTO_SHA256_S390=m
776+CONFIG_CRYPTO_SHA3_256_S390=m
777+CONFIG_CRYPTO_SHA3_512_S390=m
778+CONFIG_CRYPTO_GHASH_S390=m
779+CONFIG_CRYPTO_AES_S390=m
780+CONFIG_CRYPTO_DES_S390=m
781+CONFIG_CRYPTO_CHACHA_S390=m
782782 CONFIG_ZCRYPT=m
783783 CONFIG_PKEY=m
784784 CONFIG_CRYPTO_PAES_S390=m
@@ -797,7 +797,6 @@ CONFIG_CMA_SIZE_MBYTES=0 · 12 unmodified lines
797797 CONFIG_PRINTK_TIME=y
798798 CONFIG_DYNAMIC_DEBUG=y
799799 CONFIG_DEBUG_INFO_DWARF4=y
800−CONFIG_DEBUG_INFO_BTF=y
801800 CONFIG_GDB_SCRIPTS=y
802801 CONFIG_HEADERS_INSTALL=y
803802 CONFIG_DEBUG_SECTION_MISMATCH=y
arch/s390/configs/defconfig+33−34
@@ -707,53 +707,43 @@ CONFIG_CRYPTO_ECDSA=m · 706 unmodified lines
707707 CONFIG_CRYPTO_ECRDSA=m
708708 CONFIG_CRYPTO_SM2=m
709709 CONFIG_CRYPTO_CURVE25519=m
710−CONFIG_CRYPTO_GCM=y
711−CONFIG_CRYPTO_CHACHA20POLY1305=m
712−CONFIG_CRYPTO_AEGIS128=m
713−CONFIG_CRYPTO_SEQIV=y
714−CONFIG_CRYPTO_CFB=m
715−CONFIG_CRYPTO_LRW=m
716−CONFIG_CRYPTO_OFB=m
717−CONFIG_CRYPTO_PCBC=m
718−CONFIG_CRYPTO_KEYWRAP=m
719−CONFIG_CRYPTO_ADIANTUM=m
720−CONFIG_CRYPTO_HCTR2=m
721−CONFIG_CRYPTO_XCBC=m
722−CONFIG_CRYPTO_VMAC=m
723−CONFIG_CRYPTO_CRC32=m
724−CONFIG_CRYPTO_CRC32_S390=y
725−CONFIG_CRYPTO_MD4=m
726−CONFIG_CRYPTO_MD5=y
727−CONFIG_CRYPTO_MICHAEL_MIC=m
728−CONFIG_CRYPTO_RMD160=m
729−CONFIG_CRYPTO_SHA512_S390=m
730−CONFIG_CRYPTO_SHA1_S390=m
731−CONFIG_CRYPTO_SHA256_S390=m
732−CONFIG_CRYPTO_SHA3=m
733−CONFIG_CRYPTO_SHA3_256_S390=m
734−CONFIG_CRYPTO_SHA3_512_S390=m
735−CONFIG_CRYPTO_SM3_GENERIC=m
736−CONFIG_CRYPTO_WP512=m
737−CONFIG_CRYPTO_GHASH_S390=m
738710 CONFIG_CRYPTO_AES_TI=m
739−CONFIG_CRYPTO_AES_S390=m
740711 CONFIG_CRYPTO_ANUBIS=m
741−CONFIG_CRYPTO_ARC4=m
712+CONFIG_CRYPTO_ARIA=m
742713 CONFIG_CRYPTO_BLOWFISH=m
743714 CONFIG_CRYPTO_CAMELLIA=m
744715 CONFIG_CRYPTO_CAST5=m
745716 CONFIG_CRYPTO_CAST6=m
746717 CONFIG_CRYPTO_DES=m
747−CONFIG_CRYPTO_DES_S390=m
748718 CONFIG_CRYPTO_FCRYPT=m
749719 CONFIG_CRYPTO_KHAZAD=m
750−CONFIG_CRYPTO_CHACHA_S390=m
751720 CONFIG_CRYPTO_SEED=m
752−CONFIG_CRYPTO_ARIA=m
753721 CONFIG_CRYPTO_SERPENT=m
754722 CONFIG_CRYPTO_SM4_GENERIC=m
755723 CONFIG_CRYPTO_TEA=m
756724 CONFIG_CRYPTO_TWOFISH=m
725+CONFIG_CRYPTO_ADIANTUM=m
726+CONFIG_CRYPTO_ARC4=m
727+CONFIG_CRYPTO_CFB=m
728+CONFIG_CRYPTO_HCTR2=m
729+CONFIG_CRYPTO_KEYWRAP=m
730+CONFIG_CRYPTO_LRW=m
731+CONFIG_CRYPTO_OFB=m
732+CONFIG_CRYPTO_PCBC=m
733+CONFIG_CRYPTO_AEGIS128=m
734+CONFIG_CRYPTO_CHACHA20POLY1305=m
735+CONFIG_CRYPTO_GCM=y
736+CONFIG_CRYPTO_SEQIV=y
737+CONFIG_CRYPTO_MD4=m
738+CONFIG_CRYPTO_MD5=y
739+CONFIG_CRYPTO_MICHAEL_MIC=m
740+CONFIG_CRYPTO_RMD160=m
741+CONFIG_CRYPTO_SHA3=m
742+CONFIG_CRYPTO_SM3_GENERIC=m
743+CONFIG_CRYPTO_VMAC=m
744+CONFIG_CRYPTO_WP512=m
745+CONFIG_CRYPTO_XCBC=m
746+CONFIG_CRYPTO_CRC32=m
757747 CONFIG_CRYPTO_842=m
758748 CONFIG_CRYPTO_LZ4=m
759749 CONFIG_CRYPTO_LZ4HC=m
@@ -764,6 +754,16 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m · 4 unmodified lines
764754 CONFIG_CRYPTO_USER_API_RNG=m
765755 CONFIG_CRYPTO_USER_API_AEAD=m
766756 CONFIG_CRYPTO_STATS=y
757+CONFIG_CRYPTO_CRC32_S390=y
758+CONFIG_CRYPTO_SHA512_S390=m
759+CONFIG_CRYPTO_SHA1_S390=m
760+CONFIG_CRYPTO_SHA256_S390=m
761+CONFIG_CRYPTO_SHA3_256_S390=m
762+CONFIG_CRYPTO_SHA3_512_S390=m
763+CONFIG_CRYPTO_GHASH_S390=m
764+CONFIG_CRYPTO_AES_S390=m
765+CONFIG_CRYPTO_DES_S390=m
766+CONFIG_CRYPTO_CHACHA_S390=m
767767 CONFIG_ZCRYPT=m
768768 CONFIG_PKEY=m
769769 CONFIG_CRYPTO_PAES_S390=m
@@ -781,7 +781,6 @@ CONFIG_CMA_SIZE_MBYTES=0 · 11 unmodified lines
781781 CONFIG_PRINTK_TIME=y
782782 CONFIG_DYNAMIC_DEBUG=y
783783 CONFIG_DEBUG_INFO_DWARF4=y
784−CONFIG_DEBUG_INFO_BTF=y
785784 CONFIG_GDB_SCRIPTS=y
786785 CONFIG_DEBUG_SECTION_MISMATCH=y
787786 CONFIG_MAGIC_SYSRQ=y
arch/s390/configs/kasan.config+3−0
@@ -0,0 +1,3 @@
1+CONFIG_KASAN=y
2+CONFIG_KASAN_INLINE=y
3+CONFIG_KASAN_VMALLOC=y
arch/s390/configs/zfcpdump_defconfig+0−1
@@ -74,7 +74,6 @@ CONFIG_PRINTK_TIME=y · 73 unmodified lines
7474 # CONFIG_SYMBOLIC_ERRNAME is not set
7575 CONFIG_DEBUG_KERNEL=y
7676 CONFIG_DEBUG_INFO_DWARF4=y
77−CONFIG_DEBUG_INFO_BTF=y
7877 CONFIG_DEBUG_FS=y
7978 CONFIG_PANIC_ON_OOPS=y
8079 # 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
12071207 return 0;
12081208 }
12091209
1210+static void __kvm_s390_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod);
1211+
12101212 static int kvm_s390_set_tod_ext(struct kvm *kvm, struct kvm_device_attr *attr)
12111213 {
12121214 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
12161218
12171219 if (!test_kvm_facility(kvm, 139) && gtod.epoch_idx)
12181220 return -EINVAL;
1219− kvm_s390_set_tod_clock(kvm, &gtod);
1221+ __kvm_s390_set_tod_clock(kvm, &gtod);
12201222
12211223 VM_EVENT(kvm, 3, "SET: TOD extension: 0x%x, TOD base: 0x%llx",
12221224 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
12471249 sizeof(gtod.tod)))
12481250 return -EFAULT;
12491251
1250− kvm_s390_set_tod_clock(kvm, &gtod);
1252+ __kvm_s390_set_tod_clock(kvm, &gtod);
12511253 VM_EVENT(kvm, 3, "SET: TOD base: 0x%llx", gtod.tod);
12521254 return 0;
12531255 }
@@ -1259,6 +1261,16 @@ static int kvm_s390_set_tod(struct kvm *kvm, struct kvm_device_attr *attr) · 5 unmodified lines
12591261 if (attr->flags)
12601262 return -EINVAL;
12611263
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+
12621274 switch (attr->attr) {
12631275 case KVM_S390_VM_TOD_EXT:
12641276 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
12731285 ret = -ENXIO;
12741286 break;
12751287 }
1288+
1289+out_unlock:
1290+ mutex_unlock(&kvm->lock);
12761291 return ret;
12771292 }
12781293
@@ -4377,13 +4392,6 @@ static void __kvm_s390_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_t · 3098 unmodified lines
43774392 preempt_enable();
43784393 }
43794394
4380−void 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−
43874395 int kvm_s390_try_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod)
43884396 {
43894397 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
363363 int kvm_s390_handle_sigp_pei(struct kvm_vcpu *vcpu);
364364
365365 /* implemented in kvm-s390.c */
366−void kvm_s390_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod);
367366 int kvm_s390_try_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod);
368367 long kvm_arch_fault_in_page(struct kvm_vcpu *vcpu, gpa_t gpa, int writable);
369368 int 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
126126 return -EPERM;
127127
128128 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 *),
130130 GFP_KERNEL);
131131 if (!aift->kzdev) {
132132 rc = -ENOMEM;
arch/x86/hyperv/hv_init.c+10−9
@@ -444,7 +444,7 @@ void __init hyperv_init(void) · 443 unmodified lines
444444
445445 if (hv_root_partition) {
446446 struct page *pg;
447− void *src, *dst;
447+ void *src;
448448
449449 /*
450450 * For the root partition, the hypervisor will set up its
@@ -459,13 +459,11 @@ void __init hyperv_init(void) · 8 unmodified lines
459459 wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
460460
461461 pg = vmalloc_to_page(hv_hypercall_pg);
462− dst = kmap_local_page(pg);
463462 src = memremap(hypercall_msr.guest_physical_address << PAGE_SHIFT, PAGE_SIZE,
464463 MEMREMAP_WB);
465− BUG_ON(!(src && dst));
466− memcpy(dst, src, HV_HYP_PAGE_SIZE);
464+ BUG_ON(!src);
465+ memcpy_to_page(pg, 0, src, HV_HYP_PAGE_SIZE);
467466 memunmap(src);
468− kunmap_local(dst);
469467 } else {
470468 hypercall_msr.guest_physical_address = vmalloc_to_pfn(hv_hypercall_pg);
471469 wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
@@ -537,6 +535,7 @@ common_free: · 65 unmodified lines
537535 void hyperv_cleanup(void)
538536 {
539537 union hv_x64_msr_hypercall_contents hypercall_msr;
538+ union hv_reference_tsc_msr tsc_msr;
540539
541540 unregister_syscore_ops(&hv_syscore_ops);
542541
@@ -552,12 +551,14 @@ void hyperv_cleanup(void) · 9 unmodified lines
552551 hv_hypercall_pg = NULL;
553552
554553 /* Reset the hypercall page */
555− hypercall_msr.as_uint64 = 0;
556− wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
554+ hypercall_msr.as_uint64 = hv_get_register(HV_X64_MSR_HYPERCALL);
555+ hypercall_msr.enable = 0;
556+ hv_set_register(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
557557
558558 /* Reset the TSC page */
559− hypercall_msr.as_uint64 = 0;
560− wrmsrl(HV_X64_MSR_REFERENCE_TSC, hypercall_msr.as_uint64);
559+ tsc_msr.as_uint64 = hv_get_register(HV_X64_MSR_REFERENCE_TSC);
560+ tsc_msr.enable = 0;
561+ hv_set_register(HV_X64_MSR_REFERENCE_TSC, tsc_msr.as_uint64);
561562 }
562563
563564 void 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
501501 bool intr;
502502 };
503503
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)
504508 #define KVM_PMC_MAX_FIXED 3
509+#define KVM_AMD_PMC_MAX_GENERIC 6
505510 struct kvm_pmu {
506511 unsigned nr_arch_gp_counters;
507512 unsigned nr_arch_fixed_counters;
@@ -516,7 +521,7 @@ struct kvm_pmu { · 8 unmodified lines
516521 u64 reserved_bits;
517522 u64 raw_event_mask;
518523 u8 version;
519− struct kvm_pmc gp_counters[INTEL_PMC_MAX_GENERIC];
524+ struct kvm_pmc gp_counters[KVM_INTEL_PMC_MAX_GENERIC];
520525 struct kvm_pmc fixed_counters[KVM_PMC_MAX_FIXED];
521526 struct irq_work irq_work;
522527 DECLARE_BITMAP(reprogram_pmi, X86_PMC_IDX_MAX);
arch/x86/include/asm/spec-ctrl.h+5−5
@@ -13,7 +13,7 @@ · 12 unmodified lines
1313 * Takes the guest view of SPEC_CTRL MSR as a parameter and also
1414 * the guest's version of VIRT_SPEC_CTRL, if emulated.
1515 */
16−extern void x86_virt_spec_ctrl(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl, bool guest);
16+extern void x86_virt_spec_ctrl(u64 guest_virt_spec_ctrl, bool guest);
1717
1818 /**
1919 * 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
2424 * Avoids writing to the MSR if the content/bits are the same
2525 */
2626 static inline
27−void x86_spec_ctrl_set_guest(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl)
27+void x86_spec_ctrl_set_guest(u64 guest_virt_spec_ctrl)
2828 {
29− x86_virt_spec_ctrl(guest_spec_ctrl, guest_virt_spec_ctrl, true);
29+ x86_virt_spec_ctrl(guest_virt_spec_ctrl, true);
3030 }
3131
3232 /**
@@ -38,9 +38,9 @@ void x86_spec_ctrl_set_guest(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl) · 5 unmodified lines
3838 * Avoids writing to the MSR if the content/bits are the same
3939 */
4040 static inline
41−void x86_spec_ctrl_restore_host(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl)
41+void x86_spec_ctrl_restore_host(u64 guest_virt_spec_ctrl)
4242 {
43− x86_virt_spec_ctrl(guest_spec_ctrl, guest_virt_spec_ctrl, false);
43+ x86_virt_spec_ctrl(guest_virt_spec_ctrl, false);
4444 }
4545
4646 /* AMD specific Speculative Store Bypass MSR data */
arch/x86/kernel/asm-offsets.c+0−6
@@ -19,7 +19,6 @@ · 18 unmodified lines
1919 #include <asm/suspend.h>
2020 #include <asm/tlbflush.h>
2121 #include <asm/tdx.h>
22−#include "../kvm/vmx/vmx.h"
2322
2423 #ifdef CONFIG_XEN
2524 #include <xen/interface/xen.h>
@@ -108,9 +107,4 @@ static void __used common(void) · 82 unmodified lines
108107 OFFSET(TSS_sp0, tss_struct, x86_tss.sp0);
109108 OFFSET(TSS_sp1, tss_struct, x86_tss.sp1);
110109 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− }
116110 }
arch/x86/kernel/cpu/bugs.c+4−11
@@ -196,22 +196,15 @@ void __init check_bugs(void) · 195 unmodified lines
196196 }
197197
198198 /*
199− * NOTE: This function is *only* called for SVM. VMX spec_ctrl handling is
200− * done in vmenter.S.
199+ * NOTE: This function is *only* called for SVM, since Intel uses
200+ * MSR_IA32_SPEC_CTRL for SSBD.
201201 */
202202 void
203−x86_virt_spec_ctrl(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl, bool setguest)
203+x86_virt_spec_ctrl(u64 guest_virt_spec_ctrl, bool setguest)
204204 {
205− u64 msrval, guestval = guest_spec_ctrl, hostval = spec_ctrl_current();
205+ u64 guestval, hostval;
206206 struct thread_info *ti = current_thread_info();
207207
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−
215208 /*
216209 * If SSBD is not handled in MSR_SPEC_CTRL on AMD, update
217210 * 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
1515 #include <linux/context_tracking.h>
1616 #include <linux/interrupt.h>
1717 #include <linux/kallsyms.h>
18+#include <linux/kmsan.h>
1819 #include <linux/spinlock.h>
1920 #include <linux/kprobes.h>
2021 #include <linux/uaccess.h>
@@ -301,6 +302,12 @@ static noinstr bool handle_bug(struct pt_regs *regs) · 280 unmodified lines
301302 {
302303 bool handled = false;
303304
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);
304311 if (!is_valid_bugaddr(regs->ip))
305312 return handled;
306313
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
3434 obj-$(CONFIG_KVM) += kvm.o
3535 obj-$(CONFIG_KVM_INTEL) += kvm-intel.o
3636 obj-$(CONFIG_KVM_AMD) += kvm-amd.o
37+
38+AFLAGS_svm/vmenter.o := -iquote $(obj)
39+$(obj)/svm/vmenter.o: $(obj)/kvm-asm-offsets.h
40+
41+AFLAGS_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+
47+targets += kvm-asm-offsets.s
48+clean-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+
13+static 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
60566056
60576057 write_lock(&kvm->mmu_lock);
60586058
6059− kvm_mmu_invalidate_begin(kvm, gfn_start, gfn_end);
6059+ kvm_mmu_invalidate_begin(kvm, 0, -1ul);
60606060
60616061 flush = kvm_rmap_zap_gfn_range(kvm, gfn_start, gfn_end);
60626062
@@ -6070,7 +6070,7 @@ void kvm_zap_gfn_range(struct kvm *kvm, gfn_t gfn_start, gfn_t gfn_end) · 7 unmodified lines
60706070 kvm_flush_remote_tlbs_with_address(kvm, gfn_start,
60716071 gfn_end - gfn_start);
60726072
6073− kvm_mmu_invalidate_end(kvm, gfn_start, gfn_end);
6073+ kvm_mmu_invalidate_end(kvm, 0, -1ul);
60746074
60756075 write_unlock(&kvm->mmu_lock);
60766076 }
arch/x86/kvm/pmu.c+1−1
@@ -56,7 +56,7 @@ static const struct x86_cpu_id vmx_icl_pebs_cpu[] = { · 55 unmodified lines
5656 * code. Each pmc, stored in kvm_pmc.idx field, is unique across
5757 * all perf counters (both gp and fixed). The mapping relationship
5858 * between pmc and perf counters is as the following:
59− * * Intel: [0 .. INTEL_PMC_MAX_GENERIC-1] <=> gp counters
59+ * * Intel: [0 .. KVM_INTEL_PMC_MAX_GENERIC-1] <=> gp counters
6060 * [INTEL_PMC_IDX_FIXED .. INTEL_PMC_IDX_FIXED + 2] <=> fixed
6161 * * AMD: [0 .. AMD64_NUM_COUNTERS-1] and, for families 15H
6262 * 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
192192 struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);
193193 int i;
194194
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);
196197
197− for (i = 0; i < AMD64_NUM_COUNTERS_CORE ; i++) {
198+ for (i = 0; i < KVM_AMD_PMC_MAX_GENERIC ; i++) {
198199 pmu->gp_counters[i].type = KVM_PMC_GP;
199200 pmu->gp_counters[i].vcpu = vcpu;
200201 pmu->gp_counters[i].idx = i;
@@ -207,7 +208,7 @@ static void amd_pmu_reset(struct kvm_vcpu *vcpu) · 6 unmodified lines
207208 struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);
208209 int i;
209210
210− for (i = 0; i < AMD64_NUM_COUNTERS_CORE; i++) {
211+ for (i = 0; i < KVM_AMD_PMC_MAX_GENERIC; i++) {
211212 struct kvm_pmc *pmc = &pmu->gp_counters[i];
212213
213214 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
196196 __set_bit(sev->asid, sev_reclaim_asid_bitmap);
197197
198198 for_each_possible_cpu(cpu) {
199− sd = per_cpu(svm_data, cpu);
199+ sd = per_cpu_ptr(&svm_data, cpu);
200200 sd->sev_vmcbs[sev->asid] = NULL;
201201 }
202202
@@ -605,7 +605,7 @@ static int sev_es_sync_vmsa(struct vcpu_svm *svm) · 402 unmodified lines
605605 save->dr6 = svm->vcpu.arch.dr6;
606606
607607 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);
609609
610610 return 0;
611611 }
@@ -2600,7 +2600,7 @@ void sev_es_unmap_ghcb(struct vcpu_svm *svm) · 1988 unmodified lines
26002600
26012601 void pre_sev_run(struct vcpu_svm *svm, int cpu)
26022602 {
2603− struct svm_cpu_data *sd = per_cpu(svm_data, cpu);
2603+ struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, cpu);
26042604 int asid = sev_get_asid(svm->vcpu.kvm);
26052605
26062606 /* 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
245245 u32 zero1;
246246 } __attribute__((packed));
247247
248−DEFINE_PER_CPU(struct svm_cpu_data *, svm_data);
248+DEFINE_PER_CPU(struct svm_cpu_data, svm_data);
249249
250250 /*
251251 * 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
581581 pr_err("%s: err EOPNOTSUPP on %d\n", __func__, me);
582582 return -EINVAL;
583583 }
584− sd = per_cpu(svm_data, me);
585− if (!sd) {
586− pr_err("%s: svm_data is NULL on %d\n", __func__, me);
587− return -EINVAL;
588− }
589−
584+ sd = per_cpu_ptr(&svm_data, me);
590585 sd->asid_generation = 1;
591586 sd->max_asid = cpuid_ebx(SVM_CPUID_FUNC) - 1;
592587 sd->next_asid = sd->max_asid + 1;
@@ -597,7 +592,7 @@ static int svm_hardware_enable(void) · 4 unmodified lines
597592
598593 wrmsrl(MSR_EFER, efer | EFER_SVME);
599594
600− wrmsrl(MSR_VM_HSAVE_PA, __sme_page_pa(sd->save_area));
595+ wrmsrl(MSR_VM_HSAVE_PA, sd->save_area_pa);
601596
602597 if (static_cpu_has(X86_FEATURE_TSCRATEMSR)) {
603598 /*
@@ -646,42 +641,37 @@ static int svm_hardware_enable(void) · 42 unmodified lines
646641
647642 static void svm_cpu_uninit(int cpu)
648643 {
649− struct svm_cpu_data *sd = per_cpu(svm_data, cpu);
644+ struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, cpu);
650645
651− if (!sd)
646+ if (!sd->save_area)
652647 return;
653648
654− per_cpu(svm_data, cpu) = NULL;
655649 kfree(sd->sev_vmcbs);
656650 __free_page(sd->save_area);
657− kfree(sd);
651+ sd->save_area_pa = 0;
652+ sd->save_area = NULL;
658653 }
659654
660655 static int svm_cpu_init(int cpu)
661656 {
662− struct svm_cpu_data *sd;
657+ struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, cpu);
663658 int ret = -ENOMEM;
664659
665− sd = kzalloc(sizeof(struct svm_cpu_data), GFP_KERNEL);
666− if (!sd)
667− return ret;
668− sd->cpu = cpu;
660+ memset(sd, 0, sizeof(struct svm_cpu_data));
669661 sd->save_area = alloc_page(GFP_KERNEL | __GFP_ZERO);
670662 if (!sd->save_area)
671− goto free_cpu_data;
663+ return ret;
672664
673665 ret = sev_cpu_init(sd);
674666 if (ret)
675667 goto free_save_area;
676668
677− per_cpu(svm_data, cpu) = sd;
678−
669+ sd->save_area_pa = __sme_page_pa(sd->save_area);
679670 return 0;
680671
681672 free_save_area:
682673 __free_page(sd->save_area);
683−free_cpu_data:
684− kfree(sd);
674+ sd->save_area = NULL;
685675 return ret;
686676
687677 }
@@ -730,6 +720,15 @@ static bool msr_write_intercepted(struct kvm_vcpu *vcpu, u32 msr) · 42 unmodified lines
730720 u32 offset;
731721 u32 *msrpm;
732722
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+ */
733732 msrpm = is_guest_mode(vcpu) ? to_svm(vcpu)->nested.msrpm:
734733 to_svm(vcpu)->msrpm;
735734
@@ -1425,7 +1424,7 @@ static void svm_clear_current_vmcb(struct vmcb *vmcb) · 689 unmodified lines
14251424 int i;
14261425
14271426 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);
14291428 }
14301429
14311430 static void svm_vcpu_free(struct kvm_vcpu *vcpu)
@@ -1450,7 +1449,7 @@ static void svm_vcpu_free(struct kvm_vcpu *vcpu) · 18 unmodified lines
14501449 static void svm_prepare_switch_to_guest(struct kvm_vcpu *vcpu)
14511450 {
14521451 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);
14541453
14551454 if (sev_es_guest(vcpu->kvm))
14561455 sev_es_unmap_ghcb(svm);
@@ -1462,7 +1461,7 @@ static void svm_prepare_switch_to_guest(struct kvm_vcpu *vcpu) · 5 unmodified lines
14621461 * Save additional host state that will be restored on VMEXIT (sev-es)
14631462 * or subsequent vmload of host save area.
14641463 */
1465− vmsave(__sme_page_pa(sd->save_area));
1464+ vmsave(sd->save_area_pa);
14661465 if (sev_es_guest(vcpu->kvm)) {
14671466 struct sev_es_save_area *hostsa;
14681467 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
14871486 static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
14881487 {
14891488 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);
14911490
14921491 if (sd->current_vmcb != svm->vmcb) {
14931492 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
34433442
34443443 static void reload_tss(struct kvm_vcpu *vcpu)
34453444 {
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);
34473446
34483447 sd->tss_desc->type = 9; /* available 32/64-bit TSS */
34493448 load_TR_desc();
@@ -3451,7 +3450,7 @@ static void reload_tss(struct kvm_vcpu *vcpu) · 1 unmodified line
34513450
34523451 static void pre_svm_run(struct kvm_vcpu *vcpu)
34533452 {
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);
34553454 struct vcpu_svm *svm = to_svm(vcpu);
34563455
34573456 /*
@@ -3911,30 +3910,16 @@ static fastpath_t svm_exit_handlers_fastpath(struct kvm_vcpu *vcpu) · 453 unmodified lines
39113910 return EXIT_FASTPATH_NONE;
39123911 }
39133912
3914−static noinstr void svm_vcpu_enter_exit(struct kvm_vcpu *vcpu)
3913+static noinstr void svm_vcpu_enter_exit(struct kvm_vcpu *vcpu, bool spec_ctrl_intercepted)
39153914 {
39163915 struct vcpu_svm *svm = to_svm(vcpu);
3917− unsigned long vmcb_pa = svm->current_vmcb->pa;
39183916
39193917 guest_state_enter_irqoff();
39203918
3921− if (sev_es_guest(vcpu->kvm)) {
3922− __svm_sev_es_vcpu_run(vmcb_pa);
3923− } else {
3924− struct svm_cpu_data *sd = per_cpu(svm_data, vcpu->cpu);
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− }
3919+ if (sev_es_guest(vcpu->kvm))
3920+ __svm_sev_es_vcpu_run(svm, spec_ctrl_intercepted);
3921+ else
3922+ __svm_vcpu_run(svm, spec_ctrl_intercepted);
39383923
39393924 guest_state_exit_irqoff();
39403925 }
@@ -3942,6 +3927,7 @@ static noinstr void svm_vcpu_enter_exit(struct kvm_vcpu *vcpu) · 1 unmodified line
39423927 static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu)
39433928 {
39443929 struct vcpu_svm *svm = to_svm(vcpu);
3930+ bool spec_ctrl_intercepted = msr_write_intercepted(vcpu, MSR_IA32_SPEC_CTRL);
39453931
39463932 trace_kvm_entry(vcpu);
39473933
@@ -3998,34 +3984,15 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) · 50 unmodified lines
39983984 * being speculatively taken.
39993985 */
40003986 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);
40023988
4003− svm_vcpu_enter_exit(vcpu);
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);
3989+ svm_vcpu_enter_exit(vcpu, spec_ctrl_intercepted);
40233990
40243991 if (!sev_es_guest(vcpu->kvm))
40253992 reload_tss(vcpu);
40263993
40273994 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);
40293996
40303997 if (!sev_es_guest(vcpu->kvm)) {
40313998 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
209209 struct vmcb *vmcb;
210210 struct kvm_vmcb_info vmcb01;
211211 struct kvm_vmcb_info *current_vmcb;
212− struct svm_cpu_data *svm_data;
213212 u32 asid;
214213 u32 sysenter_esp_hi;
215214 u32 sysenter_eip_hi;
@@ -281,8 +280,6 @@ struct vcpu_svm { · 65 unmodified lines
281280 };
282281
283282 struct svm_cpu_data {
284− int cpu;
285−
286283 u64 asid_generation;
287284 u32 max_asid;
288285 u32 next_asid;
@@ -290,13 +287,15 @@ struct svm_cpu_data { · 1 unmodified line
290287 struct kvm_ldttss_desc *tss_desc;
291288
292289 struct page *save_area;
290+ unsigned long save_area_pa;
291+
293292 struct vmcb *current_vmcb;
294293
295294 /* index = sev_asid, value = vmcb pointer */
296295 struct vmcb **sev_vmcbs;
297296 };
298297
299−DECLARE_PER_CPU(struct svm_cpu_data *, svm_data);
298+DECLARE_PER_CPU(struct svm_cpu_data, svm_data);
300299
301300 void recalc_intercepts(struct vcpu_svm *svm);
302301
@@ -683,7 +682,7 @@ void sev_es_unmap_ghcb(struct vcpu_svm *svm); · 380 unmodified lines
683682
684683 /* vmenter.S */
685684
686−void __svm_sev_es_vcpu_run(unsigned long vmcb_pa);
687−void __svm_vcpu_run(unsigned long vmcb_pa, unsigned long *regs);
685+void __svm_sev_es_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted);
686+void __svm_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted);
688687
689688 #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
6161 svm_asm1(vmsave, "a" (pa), "memory");
6262 }
6363
64−static __always_inline void vmload(unsigned long pa)
65−{
66− svm_asm1(vmload, "a" (pa), "memory");
67−}
68−
6964 #endif /* __KVM_X86_SVM_OPS_H */
arch/x86/kvm/svm/vmenter.S+209−51
@@ -4,35 +4,97 @@ · 3 unmodified lines
44 #include <asm/bitsperlong.h>
55 #include <asm/kvm_vcpu_regs.h>
66 #include <asm/nospec-branch.h>
7+#include "kvm-asm-offsets.h"
78
89 #define WORD_SIZE (BITS_PER_LONG / 8)
910
1011 /* Intentionally omit RAX as it's context switched by hardware */
11−#define VCPU_RCX __VCPU_REGS_RCX * WORD_SIZE
12−#define VCPU_RDX __VCPU_REGS_RDX * WORD_SIZE
13−#define VCPU_RBX __VCPU_REGS_RBX * WORD_SIZE
12+#define VCPU_RCX (SVM_vcpu_arch_regs + __VCPU_REGS_RCX * WORD_SIZE)
13+#define VCPU_RDX (SVM_vcpu_arch_regs + __VCPU_REGS_RDX * WORD_SIZE)
14+#define VCPU_RBX (SVM_vcpu_arch_regs + __VCPU_REGS_RBX * WORD_SIZE)
1415 /* Intentionally omit RSP as it's context switched by hardware */
15−#define VCPU_RBP __VCPU_REGS_RBP * WORD_SIZE
16−#define VCPU_RSI __VCPU_REGS_RSI * WORD_SIZE
17−#define VCPU_RDI __VCPU_REGS_RDI * WORD_SIZE
16+#define VCPU_RBP (SVM_vcpu_arch_regs + __VCPU_REGS_RBP * WORD_SIZE)
17+#define VCPU_RSI (SVM_vcpu_arch_regs + __VCPU_REGS_RSI * WORD_SIZE)
18+#define VCPU_RDI (SVM_vcpu_arch_regs + __VCPU_REGS_RDI * WORD_SIZE)
1819
1920 #ifdef CONFIG_X86_64
20−#define VCPU_R8 __VCPU_REGS_R8 * WORD_SIZE
21−#define VCPU_R9 __VCPU_REGS_R9 * WORD_SIZE
22−#define VCPU_R10 __VCPU_REGS_R10 * WORD_SIZE
23−#define VCPU_R11 __VCPU_REGS_R11 * WORD_SIZE
24−#define VCPU_R12 __VCPU_REGS_R12 * WORD_SIZE
25−#define VCPU_R13 __VCPU_REGS_R13 * WORD_SIZE
26−#define VCPU_R14 __VCPU_REGS_R14 * WORD_SIZE
27−#define VCPU_R15 __VCPU_REGS_R15 * WORD_SIZE
21+#define VCPU_R8 (SVM_vcpu_arch_regs + __VCPU_REGS_R8 * WORD_SIZE)
22+#define VCPU_R9 (SVM_vcpu_arch_regs + __VCPU_REGS_R9 * WORD_SIZE)
23+#define VCPU_R10 (SVM_vcpu_arch_regs + __VCPU_REGS_R10 * WORD_SIZE)
24+#define VCPU_R11 (SVM_vcpu_arch_regs + __VCPU_REGS_R11 * WORD_SIZE)
25+#define VCPU_R12 (SVM_vcpu_arch_regs + __VCPU_REGS_R12 * WORD_SIZE)
26+#define VCPU_R13 (SVM_vcpu_arch_regs + __VCPU_REGS_R13 * WORD_SIZE)
27+#define VCPU_R14 (SVM_vcpu_arch_regs + __VCPU_REGS_R14 * WORD_SIZE)
28+#define VCPU_R15 (SVM_vcpu_arch_regs + __VCPU_REGS_R15 * WORD_SIZE)
2829 #endif
2930
31+#define SVM_vmcb01_pa (SVM_vmcb01 + KVM_VMCB_pa)
32+
3033 .section .noinstr.text, "ax"
3134
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
40+801:
41+.endm
42+.macro RESTORE_GUEST_SPEC_CTRL_BODY
43+800:
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
67+901:
68+.endm
69+.macro RESTORE_HOST_SPEC_CTRL_BODY
70+900:
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)
82+998:
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+
3294 /**
3395 * __svm_vcpu_run - Run a vCPU via a transition to SVM guest mode
34− * @vmcb_pa: unsigned long
35− * @regs: unsigned long * (to guest registers)
96+ * @svm: struct vcpu_svm *
97+ * @spec_ctrl_intercepted: bool
3698 */
3799 SYM_FUNC_START(__svm_vcpu_run)
38100 push %_ASM_BP
@@ -47,49 +109,71 @@ SYM_FUNC_START(__svm_vcpu_run) · 8 unmodified lines
47109 #endif
48110 push %_ASM_BX
49111
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. */
51118 push %_ASM_ARG2
52119
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. */
54124 push %_ASM_ARG1
55125
56− /* Move @regs to RAX. */
57− mov %_ASM_ARG2, %_ASM_AX
126+.ifnc _ASM_ARG1, _ASM_DI
127+ /*
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
144+1: vmload %_ASM_AX
145+2:
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
58150
59151 /* Load guest registers. */
60− mov VCPU_RCX(%_ASM_AX), %_ASM_CX
61− mov VCPU_RDX(%_ASM_AX), %_ASM_DX
62− mov VCPU_RBX(%_ASM_AX), %_ASM_BX
63− mov VCPU_RBP(%_ASM_AX), %_ASM_BP
64− mov VCPU_RSI(%_ASM_AX), %_ASM_SI
65− mov VCPU_RDI(%_ASM_AX), %_ASM_DI
152+ mov VCPU_RCX(%_ASM_DI), %_ASM_CX
153+ mov VCPU_RDX(%_ASM_DI), %_ASM_DX
154+ mov VCPU_RBX(%_ASM_DI), %_ASM_BX
155+ mov VCPU_RBP(%_ASM_DI), %_ASM_BP
156+ mov VCPU_RSI(%_ASM_DI), %_ASM_SI
66157 #ifdef CONFIG_X86_64
67− mov VCPU_R8 (%_ASM_AX), %r8
68− mov VCPU_R9 (%_ASM_AX), %r9
69− mov VCPU_R10(%_ASM_AX), %r10
70− mov VCPU_R11(%_ASM_AX), %r11
71− mov VCPU_R12(%_ASM_AX), %r12
72− mov VCPU_R13(%_ASM_AX), %r13
73− mov VCPU_R14(%_ASM_AX), %r14
74− mov VCPU_R15(%_ASM_AX), %r15
158+ mov VCPU_R8 (%_ASM_DI), %r8
159+ mov VCPU_R9 (%_ASM_DI), %r9
160+ mov VCPU_R10(%_ASM_DI), %r10
161+ mov VCPU_R11(%_ASM_DI), %r11
162+ mov VCPU_R12(%_ASM_DI), %r12
163+ mov VCPU_R13(%_ASM_DI), %r13
164+ mov VCPU_R14(%_ASM_DI), %r14
165+ mov VCPU_R15(%_ASM_DI), %r15
75166 #endif
76−
77− /* "POP" @vmcb to RAX. */
78− pop %_ASM_AX
167+ mov VCPU_RDI(%_ASM_DI), %_ASM_DI
79168
80169 /* Enter guest mode */
81170 sti
82171
83−1: vmrun %_ASM_AX
84−
85−2: 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
172+3: vmrun %_ASM_AX
173+4:
174+ cli
91175
92− /* "POP" @regs to RAX. */
176+ /* Pop @svm to RAX while it's the only available register. */
93177 pop %_ASM_AX
94178
95179 /* Save all guest registers. */
@@ -110,6 +194,26 @@ SYM_FUNC_START(__svm_vcpu_run) · 14 unmodified lines
110194 mov %r15, VCPU_R15(%_ASM_AX)
111195 #endif
112196
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
201+5: vmsave %_ASM_AX
202+6:
203+
204+ /* Restores GSBASE among other things, allowing access to percpu data. */
205+ pop %_ASM_AX
206+7: vmload %_ASM_AX
207+8:
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+
113217 /*
114218 * Mitigate RETBleed for AMD/Hygon Zen uarch. RET should be
115219 * 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
145249 xor %r15d, %r15d
146250 #endif
147251
252+ /* "Pop" @spec_ctrl_intercepted. */
253+ pop %_ASM_BX
254+
148255 pop %_ASM_BX
149256
150257 #ifdef CONFIG_X86_64
@@ -159,17 +266,33 @@ SYM_FUNC_START(__svm_vcpu_run) · 8 unmodified lines
159266 pop %_ASM_BP
160267 RET
161268
162−3: cmpb $0, kvm_rebooting
269+ RESTORE_GUEST_SPEC_CTRL_BODY
270+ RESTORE_HOST_SPEC_CTRL_BODY
271+
272+10: cmpb $0, kvm_rebooting
163273 jne 2b
164274 ud2
275+30: cmpb $0, kvm_rebooting
276+ jne 4b
277+ ud2
278+50: cmpb $0, kvm_rebooting
279+ jne 6b
280+ ud2
281+70: cmpb $0, kvm_rebooting
282+ jne 8b
283+ ud2
165284
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)
167289
168290 SYM_FUNC_END(__svm_vcpu_run)
169291
170292 /**
171293 * __svm_sev_es_vcpu_run - Run a SEV-ES vCPU via a transition to SVM guest mode
172− * @vmcb_pa: unsigned long
294+ * @svm: struct vcpu_svm *
295+ * @spec_ctrl_intercepted: bool
173296 */
174297 SYM_FUNC_START(__svm_sev_es_vcpu_run)
175298 push %_ASM_BP
@@ -184,8 +307,31 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) · 8 unmodified lines
184307 #endif
185308 push %_ASM_BX
186309
187− /* Move @vmcb to RAX. */
188− mov %_ASM_ARG1, %_ASM_AX
310+ /*
311+ * 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
189335
190336 /* Enter guest mode */
191337 sti
@@ -194,11 +340,17 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) · 2 unmodified lines
194340
195341 2: cli
196342
343+ /* Pop @svm to RDI, guest registers have been saved already. */
344+ pop %_ASM_DI
345+
197346 #ifdef CONFIG_RETPOLINE
198347 /* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */
199348 FILL_RETURN_BUFFER %_ASM_AX, RSB_CLEAR_LOOPS, X86_FEATURE_RETPOLINE
200349 #endif
201350
351+ /* Clobbers RAX, RCX, RDX. */
352+ RESTORE_HOST_SPEC_CTRL
353+
202354 /*
203355 * Mitigate RETBleed for AMD/Hygon Zen uarch. RET should be
204356 * 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
208360 */
209361 UNTRAIN_RET
210362
363+ /* "Pop" @spec_ctrl_intercepted. */
364+ pop %_ASM_BX
365+
211366 pop %_ASM_BX
212367
213368 #ifdef CONFIG_X86_64
@@ -222,6 +377,9 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) · 8 unmodified lines
222377 pop %_ASM_BP
223378 RET
224379
380+ RESTORE_GUEST_SPEC_CTRL_BODY
381+ RESTORE_HOST_SPEC_CTRL_BODY
382+
225383 3: cmpb $0, kvm_rebooting
226384 jne 2b
227385 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
617617 struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);
618618 struct lbr_desc *lbr_desc = vcpu_to_lbr_desc(vcpu);
619619
620− for (i = 0; i < INTEL_PMC_MAX_GENERIC; i++) {
620+ for (i = 0; i < KVM_INTEL_PMC_MAX_GENERIC; i++) {
621621 pmu->gp_counters[i].type = KVM_PMC_GP;
622622 pmu->gp_counters[i].vcpu = vcpu;
623623 pmu->gp_counters[i].idx = i;
@@ -643,7 +643,7 @@ static void intel_pmu_reset(struct kvm_vcpu *vcpu) · 19 unmodified lines
643643 struct kvm_pmc *pmc = NULL;
644644 int i;
645645
646− for (i = 0; i < INTEL_PMC_MAX_GENERIC; i++) {
646+ for (i = 0; i < KVM_INTEL_PMC_MAX_GENERIC; i++) {
647647 pmc = &pmu->gp_counters[i];
648648
649649 pmc_stop_counter(pmc);
arch/x86/kvm/vmx/vmenter.S+1−1
@@ -1,12 +1,12 @@
11 /* SPDX-License-Identifier: GPL-2.0 */
22 #include <linux/linkage.h>
33 #include <asm/asm.h>
4−#include <asm/asm-offsets.h>
54 #include <asm/bitsperlong.h>
65 #include <asm/kvm_vcpu_regs.h>
76 #include <asm/nospec-branch.h>
87 #include <asm/percpu.h>
98 #include <asm/segment.h>
9+#include "kvm-asm-offsets.h"
1010 #include "run_flags.h"
1111
1212 #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
14381438 MSR_ARCH_PERFMON_FIXED_CTR0 + 2,
14391439 MSR_CORE_PERF_FIXED_CTR_CTRL, MSR_CORE_PERF_GLOBAL_STATUS,
14401440 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. */
14411444 MSR_ARCH_PERFMON_PERFCTR0, MSR_ARCH_PERFMON_PERFCTR1,
14421445 MSR_ARCH_PERFMON_PERFCTR0 + 2, MSR_ARCH_PERFMON_PERFCTR0 + 3,
14431446 MSR_ARCH_PERFMON_PERFCTR0 + 4, MSR_ARCH_PERFMON_PERFCTR0 + 5,
14441447 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,
14501448 MSR_ARCH_PERFMON_EVENTSEL0, MSR_ARCH_PERFMON_EVENTSEL1,
14511449 MSR_ARCH_PERFMON_EVENTSEL0 + 2, MSR_ARCH_PERFMON_EVENTSEL0 + 3,
14521450 MSR_ARCH_PERFMON_EVENTSEL0 + 4, MSR_ARCH_PERFMON_EVENTSEL0 + 5,
14531451 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,
14601452
14611453 MSR_K7_EVNTSEL0, MSR_K7_EVNTSEL1, MSR_K7_EVNTSEL2, MSR_K7_EVNTSEL3,
14621454 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. */
14631457 MSR_F15H_PERF_CTL0, MSR_F15H_PERF_CTL1, MSR_F15H_PERF_CTL2,
14641458 MSR_F15H_PERF_CTL3, MSR_F15H_PERF_CTL4, MSR_F15H_PERF_CTL5,
14651459 MSR_F15H_PERF_CTR0, MSR_F15H_PERF_CTR1, MSR_F15H_PERF_CTR2,
14661460 MSR_F15H_PERF_CTR3, MSR_F15H_PERF_CTR4, MSR_F15H_PERF_CTR5,
1461+
14671462 MSR_IA32_XFD, MSR_IA32_XFD_ERR,
14681463 };
14691464
@@ -7041,14 +7036,14 @@ static void kvm_init_msr_list(void) · 5571 unmodified lines
70417036 intel_pt_validate_hw_cap(PT_CAP_num_address_ranges) * 2)
70427037 continue;
70437038 break;
7044− case MSR_ARCH_PERFMON_PERFCTR0 ... MSR_ARCH_PERFMON_PERFCTR0 + 17:
7039+ case MSR_ARCH_PERFMON_PERFCTR0 ... MSR_ARCH_PERFMON_PERFCTR_MAX:
70457040 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))
70477042 continue;
70487043 break;
7049− case MSR_ARCH_PERFMON_EVENTSEL0 ... MSR_ARCH_PERFMON_EVENTSEL0 + 17:
7044+ case MSR_ARCH_PERFMON_EVENTSEL0 ... MSR_ARCH_PERFMON_EVENTSEL_MAX:
70507045 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))
70527047 continue;
70537048 break;
70547049 case MSR_IA32_XFD:
arch/x86/lib/usercopy.c+3−0
@@ -6,6 +6,7 @@ · 5 unmodified lines
66
77 #include <linux/uaccess.h>
88 #include <linux/export.h>
9+#include <linux/instrumented.h>
910
1011 #include <asm/tlbflush.h>
1112
@@ -44,7 +45,9 @@ copy_from_user_nmi(void *to, const void __user *from, unsigned long n) · 32 unmodified lines
4445 * called from other contexts.
4546 */
4647 pagefault_disable();
48+ instrument_copy_from_user_before(to, from, n);
4749 ret = raw_copy_from_user(to, from, n);
50+ instrument_copy_from_user_after(to, from, n, ret);
4851 pagefault_enable();
4952
5053 return ret;
arch/x86/mm/hugetlbpage.c+4−0
@@ -37,8 +37,12 @@ int pmd_huge(pmd_t pmd) · 36 unmodified lines
3737 */
3838 int pud_huge(pud_t pud)
3939 {
40+#if CONFIG_PGTABLE_LEVELS > 2
4041 return !pud_none(pud) &&
4142 (pud_val(pud) & (_PAGE_PRESENT|_PAGE_PSE)) != _PAGE_PRESENT;
43+#else
44+ return 0;
45+#endif
4246 }
4347
4448 #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
610610 struct bfq_group *bfqg;
611611
612612 while (blkg) {
613+ if (!blkg->online) {
614+ blkg = blkg->parent;
615+ continue;
616+ }
613617 bfqg = blkg_to_bfqg(blkg);
614618 if (bfqg->online) {
615619 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
8787 u64 lowest_lba;
8888
8989 size_t pos;
90− u8 cmd[IO_BUFFER_LENGTH];
91− u8 resp[IO_BUFFER_LENGTH];
90+ u8 *cmd;
91+ u8 *resp;
9292
9393 struct parsed_resp parsed;
9494 size_t prev_d_len;
@@ -2175,6 +2175,8 @@ void free_opal_dev(struct opal_dev *dev) · 2080 unmodified lines
21752175 return;
21762176
21772177 clean_opal_dev(dev);
2178+ kfree(dev->resp);
2179+ kfree(dev->cmd);
21782180 kfree(dev);
21792181 }
21802182 EXPORT_SYMBOL(free_opal_dev);
@@ -2187,6 +2189,18 @@ struct opal_dev *init_opal_dev(void *data, sec_send_recv *send_recv) · 6 unmodified lines
21872189 if (!dev)
21882190 return NULL;
21892191
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+
21902204 INIT_LIST_HEAD(&dev->unlk_lst);
21912205 mutex_init(&dev->dev_lock);
21922206 dev->flags = 0;
@@ -2194,11 +2208,21 @@ struct opal_dev *init_opal_dev(void *data, sec_send_recv *send_recv) · 1 unmodified line
21942208 dev->send_recv = send_recv;
21952209 if (check_opal_support(dev) != 0) {
21962210 pr_debug("Opal is not supported on this device\n");
2197− kfree(dev);
2198− return NULL;
2211+ goto err_free_resp;
21992212 }
22002213
22012214 return dev;
2215+
2216+err_free_resp:
2217+ kfree(dev->resp);
2218+
2219+err_free_cmd:
2220+ kfree(dev->cmd);
2221+
2222+err_free_dev:
2223+ kfree(dev);
2224+
2225+ return NULL;
22022226 }
22032227 EXPORT_SYMBOL(init_opal_dev);
22042228
drivers/acpi/video_detect.c+32−9
@@ -645,6 +645,20 @@ static const struct dmi_system_id video_detect_dmi_table[] = { · 644 unmodified lines
645645 },
646646 },
647647
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+
648662 /*
649663 * Desktops which falsely report a backlight and which our heuristics
650664 * for this do not catch.
@@ -670,7 +684,7 @@ static const struct dmi_system_id video_detect_dmi_table[] = { · 19 unmodified lines
670684
671685 static bool google_cros_ec_present(void)
672686 {
673− return acpi_dev_found("GOOG0004");
687+ return acpi_dev_found("GOOG0004") || acpi_dev_found("GOOG000C");
674688 }
675689
676690 /*
@@ -718,6 +732,10 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) · 41 unmodified lines
718732 if (apple_gmux_present())
719733 return acpi_backlight_apple_gmux;
720734
735+ /* Chromebooks should always prefer native backlight control. */
736+ if (google_cros_ec_present() && native_available)
737+ return acpi_backlight_native;
738+
721739 /* On systems with ACPI video use either native or ACPI video. */
722740 if (video_caps & ACPI_VIDEO_BACKLIGHT) {
723741 /*
@@ -735,13 +753,6 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) · 11 unmodified lines
735753 return acpi_backlight_video;
736754 }
737755
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−
745756 /* No ACPI video (old hw), use vendor specific fw methods. */
746757 return acpi_backlight_vendor;
747758 }
@@ -754,6 +765,18 @@ EXPORT_SYMBOL(acpi_video_get_backlight_type); · 6 unmodified lines
754765
755766 bool acpi_video_backlight_use_native(void)
756767 {
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;
758781 }
759782 EXPORT_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
32643264 case REPORT_LUNS:
32653265 case REQUEST_SENSE:
32663266 case SYNCHRONIZE_CACHE:
3267+ case SYNCHRONIZE_CACHE_16:
32673268 case REZERO_UNIT:
32683269 case SEEK_6:
32693270 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
39223923 return ata_scsi_write_same_xlat;
39233924
39243925 case SYNCHRONIZE_CACHE:
3926+ case SYNCHRONIZE_CACHE_16:
39253927 if (ata_try_flush_cache(dev))
39263928 return ata_scsi_flush_xlat;
39273929 break;
@@ -3962,9 +3964,19 @@ static inline ata_xlat_func_t ata_get_xlat_func(struct ata_device *dev, u8 cmd) · 34 unmodified lines
39623964
39633965 int __ata_scsi_queuecmd(struct scsi_cmnd *scmd, struct ata_device *dev)
39643966 {
3967+ struct ata_port *ap = dev->link->ap;
39653968 u8 scsi_op = scmd->cmnd[0];
39663969 ata_xlat_func_t xlat_func;
39673970
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+
39683980 if (unlikely(!scmd->cmd_len))
39693981 goto bad_cdb_len;
39703982
@@ -4145,6 +4157,7 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd) · 174 unmodified lines
41454157 * turning this into a no-op.
41464158 */
41474159 case SYNCHRONIZE_CACHE:
4160+ case SYNCHRONIZE_CACHE_16:
41484161 fallthrough;
41494162
41504163 /* 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
301301 pm_runtime_enable(dev);
302302 pm_runtime_forbid(dev);
303303
304− transport_add_device(dev);
304+ error = transport_add_device(dev);
305+ if (error)
306+ goto tport_transport_add_err;
305307 transport_configure_device(dev);
306308
307309 error = ata_tlink_add(&ap->link);
@@ -312,12 +314,12 @@ int ata_tport_add(struct device *parent, · 4 unmodified lines
312314
313315 tport_link_err:
314316 transport_remove_device(dev);
317+ tport_transport_add_err:
315318 device_del(dev);
316319
317320 tport_err:
318321 transport_destroy_device(dev);
319322 put_device(dev);
320− ata_host_put(ap->host);
321323 return error;
322324 }
323325
@@ -456,7 +458,9 @@ int ata_tlink_add(struct ata_link *link) · 132 unmodified lines
456458 goto tlink_err;
457459 }
458460
459− transport_add_device(dev);
461+ error = transport_add_device(dev);
462+ if (error)
463+ goto tlink_transport_err;
460464 transport_configure_device(dev);
461465
462466 ata_for_each_dev(ata_dev, link, ALL) {
@@ -471,6 +475,7 @@ int ata_tlink_add(struct ata_link *link) · 8 unmodified lines
471475 ata_tdev_delete(ata_dev);
472476 }
473477 transport_remove_device(dev);
478+ tlink_transport_err:
474479 device_del(dev);
475480 tlink_err:
476481 transport_destroy_device(dev);
@@ -708,7 +713,13 @@ static int ata_tdev_add(struct ata_device *ata_dev) · 231 unmodified lines
708713 return error;
709714 }
710715
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+
712723 transport_configure_device(dev);
713724 return 0;
714725 }
drivers/clocksource/hyperv_timer.c+15−14
@@ -21,6 +21,7 @@ · 20 unmodified lines
2121 #include <linux/interrupt.h>
2222 #include <linux/irq.h>
2323 #include <linux/acpi.h>
24+#include <linux/hyperv.h>
2425 #include <clocksource/hyperv_timer.h>
2526 #include <asm/hyperv-tlfs.h>
2627 #include <asm/mshyperv.h>
@@ -395,25 +396,25 @@ static u64 notrace read_hv_sched_clock_tsc(void) · 368 unmodified lines
395396
396397 static void suspend_hv_clock_tsc(struct clocksource *arg)
397398 {
398− u64 tsc_msr;
399+ union hv_reference_tsc_msr tsc_msr;
399400
400401 /* Disable the TSC page */
401− tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC);
402− tsc_msr &= ~BIT_ULL(0);
403− hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr);
402+ tsc_msr.as_uint64 = hv_get_register(HV_REGISTER_REFERENCE_TSC);
403+ tsc_msr.enable = 0;
404+ hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr.as_uint64);
404405 }
405406
406407
407408 static void resume_hv_clock_tsc(struct clocksource *arg)
408409 {
409410 phys_addr_t phys_addr = virt_to_phys(&tsc_pg);
410− u64 tsc_msr;
411+ union hv_reference_tsc_msr tsc_msr;
411412
412413 /* Re-enable the TSC page */
413− tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC);
414− tsc_msr &= GENMASK_ULL(11, 0);
415− tsc_msr |= BIT_ULL(0) | (u64)phys_addr;
416− hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr);
414+ tsc_msr.as_uint64 = hv_get_register(HV_REGISTER_REFERENCE_TSC);
415+ tsc_msr.enable = 1;
416+ tsc_msr.pfn = HVPFN_DOWN(phys_addr);
417+ hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr.as_uint64);
417418 }
418419
419420 #ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK
@@ -495,7 +496,7 @@ static __always_inline void hv_setup_sched_clock(void *sched_clock) {} · 75 unmodified lines
495496
496497 static bool __init hv_init_tsc_clocksource(void)
497498 {
498− u64 tsc_msr;
499+ union hv_reference_tsc_msr tsc_msr;
499500 phys_addr_t phys_addr;
500501
501502 if (!(ms_hyperv.features & HV_MSR_REFERENCE_TSC_AVAILABLE))
@@ -530,10 +531,10 @@ static bool __init hv_init_tsc_clocksource(void) · 28 unmodified lines
530531 * (which already has at least the low 12 bits set to zero since
531532 * it is page aligned). Also set the "enable" bit, which is bit 0.
532533 */
533− tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC);
534− tsc_msr &= GENMASK_ULL(11, 0);
535− tsc_msr = tsc_msr | 0x1 | (u64)phys_addr;
536− hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr);
534+ tsc_msr.as_uint64 = hv_get_register(HV_REGISTER_REFERENCE_TSC);
535+ tsc_msr.enable = 1;
536+ tsc_msr.pfn = HVPFN_DOWN(phys_addr);
537+ hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr.as_uint64);
537538
538539 clocksource_register_hz(&hyperv_cs_tsc, NSEC_PER_SEC/100);
539540
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
493493 return NULL;
494494 }
495495
496− return &ad->channels[index].chan;
496+ return dma_get_slave_channel(&ad->channels[index].chan);
497497 }
498498
499499 static 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
256256 ATC_SPIP_BOUNDARY(first->boundary));
257257 channel_writel(atchan, DPIP, ATC_DPIP_HOLE(first->dst_hole) |
258258 ATC_DPIP_BOUNDARY(first->boundary));
259+ /* Don't allow CPU to reorder channel enable. */
260+ wmb();
259261 dma_writel(atdma, CHER, atchan->mask);
260262
261263 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
316318 struct at_desc *desc_first = atc_first_active(atchan);
317319 struct at_desc *desc;
318320 int ret;
319− u32 ctrla, dscr, trials;
321+ u32 ctrla, dscr;
322+ unsigned int i;
320323
321324 /*
322325 * 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
386389 dscr = channel_readl(atchan, DSCR);
387390 rmb(); /* ensure DSCR is read before CTRLA */
388391 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) {
390393 u32 new_dscr;
391394
392395 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
412415 rmb(); /* ensure DSCR is read before CTRLA */
413416 ctrla = channel_readl(atchan, CTRLA);
414417 }
415− if (unlikely(trials >= ATC_MAX_DSCR_TRIALS))
418+ if (unlikely(i == ATC_MAX_DSCR_TRIALS))
416419 return -ETIMEDOUT;
417420
418421 /* 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
462465 if (!atc_chan_is_cyclic(atchan))
463466 dma_cookie_complete(txd);
464467
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−
477468 spin_unlock_irqrestore(&atchan->lock, flags);
478469
479470 dma_descriptor_unmap(txd);
@@ -483,42 +474,20 @@ atc_chain_complete(struct at_dma_chan *atchan, struct at_desc *desc) · 3 unmodified lines
483474 dmaengine_desc_get_callback_invoke(txd, NULL);
484475
485476 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− */
497−static 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");
504477
505478 spin_lock_irqsave(&atchan->lock, flags);
506−
507− /*
508− * Submit queued descriptors ASAP, i.e. before we go through
509− * the completed ones.
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−
479+ /* move children to free_list */
480+ list_splice_init(&desc->tx_list, &atchan->free_list);
481+ /* add myself to free_list */
482+ list_add(&desc->desc_node, &atchan->free_list);
518483 spin_unlock_irqrestore(&atchan->lock, flags);
519484
520− list_for_each_entry_safe(desc, _desc, &list, desc_node)
521− atc_chain_complete(atchan, desc);
485+ /* If the transfer was a memset, free our temporary buffer */
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+ }
522491 }
523492
524493 /**
@@ -527,26 +496,28 @@ static void atc_complete_all(struct at_dma_chan *atchan) · 2 unmodified lines
527496 */
528497 static void atc_advance_work(struct at_dma_chan *atchan)
529498 {
499+ struct at_desc *desc;
530500 unsigned long flags;
531− int ret;
532501
533502 dev_vdbg(chan2dev(&atchan->chan_common), "advance_work\n");
534503
535504 spin_lock_irqsave(&atchan->lock, flags);
536− ret = atc_chan_is_enabled(atchan);
537− 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);
505+ if (atc_chan_is_enabled(atchan) || list_empty(&atchan->active_list))
506+ return spin_unlock_irqrestore(&atchan->lock, flags);
544507
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);
546513
547514 /* advance work */
548515 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+ }
550521 spin_unlock_irqrestore(&atchan->lock, flags);
551522 }
552523
@@ -558,6 +529,7 @@ static void atc_advance_work(struct at_dma_chan *atchan) · 5 unmodified lines
558529 static void atc_handle_error(struct at_dma_chan *atchan)
559530 {
560531 struct at_desc *bad_desc;
532+ struct at_desc *desc;
561533 struct at_desc *child;
562534 unsigned long flags;
563535
@@ -570,13 +542,12 @@ static void atc_handle_error(struct at_dma_chan *atchan) · 6 unmodified lines
570542 bad_desc = atc_first_active(atchan);
571543 list_del_init(&bad_desc->desc_node);
572544
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−
577545 /* Try to restart the controller */
578− if (!list_empty(&atchan->active_list))
579− atc_dostart(atchan, atc_first_active(atchan));
546+ if (!list_empty(&atchan->active_list)) {
547+ desc = atc_first_queued(atchan);
548+ list_move_tail(&desc->desc_node, &atchan->active_list);
549+ atc_dostart(atchan, desc);
550+ }
580551
581552 /*
582553 * 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
691662 spin_lock_irqsave(&atchan->lock, flags);
692663 cookie = dma_cookie_assign(tx);
693664
694− if (list_empty(&atchan->active_list)) {
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−
665+ list_add_tail(&desc->desc_node, &atchan->queue);
705666 spin_unlock_irqrestore(&atchan->lock, flags);
706667
668+ dev_vdbg(chan2dev(tx->chan), "tx_submit: queued %u\n",
669+ desc->txd.cookie);
707670 return cookie;
708671 }
709672
@@ -1445,11 +1408,8 @@ static int atc_terminate_all(struct dma_chan *chan) · 735 unmodified lines
14451408 struct at_dma_chan *atchan = to_at_dma_chan(chan);
14461409 struct at_dma *atdma = to_at_dma(chan->device);
14471410 int chan_id = atchan->chan_common.chan_id;
1448− struct at_desc *desc, *_desc;
14491411 unsigned long flags;
14501412
1451− LIST_HEAD(list);
1452−
14531413 dev_vdbg(chan2dev(chan), "%s\n", __func__);
14541414
14551415 /*
@@ -1468,19 +1428,15 @@ static int atc_terminate_all(struct dma_chan *chan) · 12 unmodified lines
14681428 cpu_relax();
14691429
14701430 /* active_list entries will end up before queued entries */
1471− list_splice_init(&atchan->queue, &list);
1472− list_splice_init(&atchan->active_list, &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);
1431+ list_splice_tail_init(&atchan->queue, &atchan->free_list);
1432+ list_splice_tail_init(&atchan->active_list, &atchan->free_list);
14791433
14801434 clear_bit(ATC_IS_PAUSED, &atchan->status);
14811435 /* if channel dedicated to cyclic operations, free it */
14821436 clear_bit(ATC_IS_CYCLIC, &atchan->status);
14831437
1438+ spin_unlock_irqrestore(&atchan->lock, flags);
1439+
14841440 return 0;
14851441 }
14861442
@@ -1535,20 +1491,26 @@ atc_tx_status(struct dma_chan *chan, · 48 unmodified lines
15351491 }
15361492
15371493 /**
1538− * atc_issue_pending - try to finish work
1494+ * atc_issue_pending - takes the first transaction descriptor in the pending
1495+ * queue and starts the transfer.
15391496 * @chan: target DMA channel
15401497 */
15411498 static void atc_issue_pending(struct dma_chan *chan)
15421499 {
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;
15441503
15451504 dev_vdbg(chan2dev(chan), "issue_pending\n");
15461505
1547− /* Not needed for cyclic transfers */
1548− if (atc_chan_is_cyclic(atchan))
1549− return;
1506+ spin_lock_irqsave(&atchan->lock, flags);
1507+ if (atc_chan_is_enabled(atchan) || list_empty(&atchan->queue))
1508+ return spin_unlock_irqrestore(&atchan->lock, flags);
15501509
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);
15521514 }
15531515
15541516 /**
@@ -1966,7 +1928,11 @@ static int __init at_dma_probe(struct platform_device *pdev) · 411 unmodified lines
19661928 dma_has_cap(DMA_SLAVE, atdma->dma_common.cap_mask) ? "slave " : "",
19671929 plat_dat->nr_channels);
19681930
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+ }
19701936
19711937 /*
19721938 * 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
19861952
19871953 err_of_dma_controller_register:
19881954 dma_async_device_unregister(&atdma->dma_common);
1955+err_dma_async_device_register:
19891956 dma_pool_destroy(atdma->memset_pool);
19901957 err_memset_pool_create:
19911958 dma_pool_destroy(atdma->dma_desc_pool);
drivers/dma/at_hdmac_regs.h+5−5
@@ -186,13 +186,13 @@ · 185 unmodified lines
186186 /* LLI == Linked List Item; aka DMA buffer descriptor */
187187 struct at_lli {
188188 /* values that are not changed by hardware */
189− dma_addr_t saddr;
190− dma_addr_t daddr;
189+ u32 saddr;
190+ u32 daddr;
191191 /* value that may get written back: */
192− u32 ctrla;
192+ u32 ctrla;
193193 /* more values that are not changed by hardware */
194− u32 ctrlb;
195− dma_addr_t dscr; /* chain to next lli */
194+ u32 ctrlb;
195+ u32 dscr; /* chain to next lli */
196196 };
197197
198198 /**
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
312312 if (idxd->state != IDXD_DEV_ENABLED)
313313 return -ENXIO;
314314
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+
315333 mutex_lock(&wq->wq_lock);
316334 wq->type = IDXD_WQT_USER;
317335 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
390390 clear_bit(WQ_FLAG_ATS_DISABLE, &wq->flags);
391391 memset(wq->name, 0, WQ_NAME_SIZE);
392392 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);
394394 if (wq->opcap_bmap)
395395 bitmap_copy(wq->opcap_bmap, idxd->opcap_bmap, IDXD_MAX_OPCAP_BITS);
396396 }
@@ -730,13 +730,21 @@ static void idxd_device_wqs_clear_state(struct idxd_device *idxd) · 333 unmodified lines
730730
731731 void idxd_device_clear_state(struct idxd_device *idxd)
732732 {
733− if (!test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags))
734− return;
733+ /* IDXD is always disabled. Other states are cleared only when IDXD is configurable. */
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+ }
735747
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);
740748 idxd->state = IDXD_DEV_DISABLED;
741749 spin_unlock(&idxd->dev_lock);
742750 }
@@ -869,7 +877,7 @@ static int idxd_wq_config_write(struct idxd_wq *wq) · 126 unmodified lines
869877
870878 /* bytes 12-15 */
871879 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));
873881
874882 /* bytes 32-63 */
875883 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
10511059 wq->priority = wq->wqcfg->priority;
10521060
10531061 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);
10551063
10561064 for (i = 0; i < WQCFG_STRIDES(idxd); i++) {
10571065 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
548548 return wq->client_count;
549549 };
550550
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+ */
556+static 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+
565+static 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+
574+static 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+
551583 int __must_check __idxd_driver_register(struct idxd_device_driver *idxd_drv,
552584 struct module *module, const char *mod_name);
553585 #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
183183 init_completion(&wq->wq_dead);
184184 init_completion(&wq->wq_resurrect);
185185 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);
187187 wq->enqcmds_retries = IDXD_ENQCMDS_RETRIES;
188188 wq->wqcfg = kzalloc_node(idxd->wqcfg_size, GFP_KERNEL, dev_to_node(dev));
189189 if (!wq->wqcfg) {
@@ -418,7 +418,7 @@ static void idxd_read_caps(struct idxd_device *idxd) · 228 unmodified lines
418418
419419 idxd->max_xfer_bytes = 1ULL << idxd->hw.gen_cap.max_xfer_shift;
420420 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);
422422 dev_dbg(dev, "max batch size: %u\n", idxd->max_batch_size);
423423 if (idxd->hw.gen_cap.config_en)
424424 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
10461046 if (batch_size > idxd->max_batch_size)
10471047 return -EINVAL;
10481048
1049− wq->max_batch_size = (u32)batch_size;
1049+ idxd_wq_set_max_batch_size(idxd->data->type, wq, (u32)batch_size);
10501050
10511051 return count;
10521052 }
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
893893 tasklet_kill(&xor_dev->irq_tasklet);
894894
895895 clk_disable_unprepare(xor_dev->clk);
896+ clk_disable_unprepare(xor_dev->reg_clk);
896897
897898 return 0;
898899 }
drivers/dma/pxa_dma.c+2−2
@@ -1247,14 +1247,14 @@ static int pxad_init_phys(struct platform_device *op, · 1246 unmodified lines
12471247 return -ENOMEM;
12481248
12491249 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)
12511251 nr_irq++;
12521252
12531253 for (i = 0; i < nb_phy_chans; i++) {
12541254 phy = &pdev->phys[i];
12551255 phy->base = pdev->base;
12561256 phy->idx = i;
1257− irq = platform_get_irq(op, i);
1257+ irq = platform_get_irq_optional(op, i);
12581258 if ((nr_irq > 1) && (irq > 0))
12591259 ret = devm_request_irq(&op->dev, irq,
12601260 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
675675
676676 chan->chan_reg.dma_sndtr = stm32_dma_read(dmadev, STM32_DMA_SNDTR(chan->id));
677677
678+ chan->status = DMA_PAUSED;
679+
678680 dev_dbg(chan2dev(chan), "vchan %pK: paused\n", &chan->vchan);
679681 }
680682
@@ -789,9 +791,7 @@ static irqreturn_t stm32_dma_chan_irq(int irq, void *devid) · 108 unmodified lines
789791 if (status & STM32_DMA_TCI) {
790792 stm32_dma_irq_clear(chan, STM32_DMA_TCI);
791793 if (scr & STM32_DMA_SCR_TCIE) {
792− if (chan->status == DMA_PAUSED && !(scr & STM32_DMA_SCR_EN))
793− stm32_dma_handle_chan_paused(chan);
794− else
794+ if (chan->status != DMA_PAUSED)
795795 stm32_dma_handle_chan_done(chan, scr);
796796 }
797797 status &= ~STM32_DMA_TCI;
@@ -838,13 +838,11 @@ static int stm32_dma_pause(struct dma_chan *c) · 40 unmodified lines
838838 return -EPERM;
839839
840840 spin_lock_irqsave(&chan->vchan.lock, flags);
841+
841842 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− */
846843 if (!ret)
847− chan->status = DMA_PAUSED;
844+ stm32_dma_handle_chan_paused(chan);
845+
848846 spin_unlock_irqrestore(&chan->vchan.lock, flags);
849847
850848 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
15391539 return NULL;
15401540 }
15411541
1542+ memset(&config, 0, sizeof(config));
15421543 config.request = dma_spec->args[0];
15431544 config.priority_level = dma_spec->args[1];
15441545 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
299299 ret = device_register(&tx_chn->common.chan_dev);
300300 if (ret) {
301301 dev_err(dev, "Channel Device registration failed %d\n", ret);
302+ put_device(&tx_chn->common.chan_dev);
302303 tx_chn->common.chan_dev.parent = NULL;
303304 goto err;
304305 }
@@ -917,6 +918,7 @@ k3_udma_glue_request_rx_chn_priv(struct device *dev, const char *name, · 612 unmodified lines
917918 ret = device_register(&rx_chn->common.chan_dev);
918919 if (ret) {
919920 dev_err(dev, "Channel Device registration failed %d\n", ret);
921+ put_device(&rx_chn->common.chan_dev);
920922 rx_chn->common.chan_dev.parent = NULL;
921923 goto err;
922924 }
@@ -1048,6 +1050,7 @@ k3_udma_glue_request_remote_rx_chn(struct device *dev, const char *name, · 125 unmodified lines
10481050 ret = device_register(&rx_chn->common.chan_dev);
10491051 if (ret) {
10501052 dev_err(dev, "Channel Device registration failed %d\n", ret);
1053+ put_device(&rx_chn->common.chan_dev);
10511054 rx_chn->common.chan_dev.parent = NULL;
10521055 goto err;
10531056 }
drivers/firmware/efi/libstub/Makefile+1−1
@@ -82,7 +82,7 @@ $(obj)/lib-%.o: $(srctree)/lib/%.c FORCE · 81 unmodified lines
8282 lib-$(CONFIG_EFI_GENERIC_STUB) += efi-stub.o string.o intrinsics.o systable.o
8383
8484 lib-$(CONFIG_ARM) += arm32-stub.o
85−lib-$(CONFIG_ARM64) += arm64-stub.o
85+lib-$(CONFIG_ARM64) += arm64-stub.o smbios.o
8686 lib-$(CONFIG_X86) += x86-stub.o
8787 lib-$(CONFIG_RISCV) += riscv-stub.o
8888 lib-$(CONFIG_LOONGARCH) += loongarch-stub.o
drivers/firmware/efi/libstub/arm64-stub.c+16−1
@@ -15,6 +15,21 @@ · 14 unmodified lines
1515
1616 #include "efistub.h"
1717
18+static 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+
1833 efi_status_t check_platform_features(void)
1934 {
2035 u64 tg;
@@ -24,7 +39,7 @@ efi_status_t check_platform_features(void) · 3 unmodified lines
2439 * UEFI runtime regions 1:1 and so calling SetVirtualAddressMap() is
2540 * unnecessary.
2641 */
27− if (VA_BITS_MIN >= 48)
42+ if (VA_BITS_MIN >= 48 && !system_needs_vamap())
2843 efi_novamap = true;
2944
3045 /* 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
975975
976976 void efi_retrieve_tpm2_eventlog(void);
977977
978+struct efi_smbios_record {
979+ u8 type;
980+ u8 length;
981+ u16 handle;
982+};
983+
984+struct 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+
1004+const u8 *__efi_get_smbios_string(u8 type, int offset, int recsize);
1005+
9781006 #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+
9+typedef struct efi_smbios_protocol efi_smbios_protocol_t;
10+
11+struct 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+
25+const 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
992992 kvfree(e->user_pages);
993993 e->user_pages = NULL;
994994 }
995+ mutex_unlock(&p->bo_list->bo_list_mutex);
995996 return r;
996997 }
997998
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
143143 return 0;
144144 }
145145
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− */
151−static 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−
157−static 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−
166−static 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−
172146 /**
173147 * amdgpu_vm_bo_evicted - vm_bo is evicted
174148 *
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
492492 */
493493 static inline uint64_t amdgpu_vm_tlb_seq(struct amdgpu_vm *vm)
494494 {
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+
495510 return atomic64_read(&vm->tlb_seq);
496511 }
497512
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+ */
518+static 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+
524+static 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+
533+static 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+
498539 #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
597597 if (entry->bo)
598598 return 0;
599599
600+ amdgpu_vm_eviction_unlock(vm);
600601 r = amdgpu_vm_pt_create(adev, vm, cursor->level, immediate, &pt);
602+ amdgpu_vm_eviction_lock(vm);
601603 if (r)
602604 return r;
603605
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
435435 if (place->flags & TTM_PL_FLAG_TOPDOWN)
436436 vres->flags |= DRM_BUDDY_TOPDOWN_ALLOCATION;
437437
438− if (fpfn || lpfn != man->size)
438+ if (fpfn || lpfn != mgr->mm.size)
439439 /* Allocate blocks in desired range */
440440 vres->flags |= DRM_BUDDY_RANGE_ALLOCATION;
441441
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c+15−19
@@ -1950,7 +1950,7 @@ static int criu_checkpoint(struct file *filep, · 1949 unmodified lines
19501950 {
19511951 int ret;
19521952 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;
19541954
19551955 if (!args->devices || !args->bos || !args->priv_data)
19561956 return -EINVAL;
@@ -1994,38 +1994,34 @@ static int criu_checkpoint(struct file *filep, · 37 unmodified lines
19941994 if (ret)
19951995 goto exit_unlock;
19961996
1997− ret = criu_checkpoint_bos(p, num_bos, (uint8_t __user *)args->bos,
1998− (uint8_t __user *)args->priv_data, &priv_offset);
1999− if (ret)
2000− goto exit_unlock;
1997+ /* Leave room for BOs in the private data. They need to be restored
1998+ * before events, but we checkpoint them last to simplify the error
1999+ * handling.
2000+ */
2001+ bo_priv_offset = priv_offset;
2002+ priv_offset += num_bos * sizeof(struct kfd_criu_bo_priv_data);
20012003
20022004 if (num_objects) {
20032005 ret = kfd_criu_checkpoint_queues(p, (uint8_t __user *)args->priv_data,
20042006 &priv_offset);
20052007 if (ret)
2006− goto close_bo_fds;
2008+ goto exit_unlock;
20072009
20082010 ret = kfd_criu_checkpoint_events(p, (uint8_t __user *)args->priv_data,
20092011 &priv_offset);
20102012 if (ret)
2011− goto close_bo_fds;
2013+ goto exit_unlock;
20122014
20132015 ret = kfd_criu_checkpoint_svm(p, (uint8_t __user *)args->priv_data, &priv_offset);
20142016 if (ret)
2015− goto close_bo_fds;
2017+ goto exit_unlock;
20162018 }
20172019
2018−close_bo_fds:
2019− if (ret) {
2020− /* If IOCTL returns err, user assumes all FDs opened in criu_dump_bos are closed */
2021− uint32_t i;
2022− struct kfd_criu_bo_bucket *bo_buckets = (struct kfd_criu_bo_bucket *) args->bos;
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− }
2020+ /* This must be the last thing in this function that can fail.
2021+ * Otherwise we leak dmabuf file descriptors.
2022+ */
2023+ ret = criu_checkpoint_bos(p, num_bos, (uint8_t __user *)args->bos,
2024+ (uint8_t __user *)args->priv_data, &bo_priv_offset);
20292025
20302026 exit_unlock:
20312027 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
506506 ret = create_other_event(p, ev, &ev_priv->event_id);
507507 break;
508508 }
509+ mutex_unlock(&p->event_mutex);
509510
510511 exit:
511512 if (ret)
@@ -513,8 +514,6 @@ exit: · 1 unmodified line
513514
514515 kfree(ev_priv);
515516
516− mutex_unlock(&p->event_mutex);
517−
518517 return ret;
519518 }
520519
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
76227622 bundle->surface_updates[planes_count].plane_info =
76237623 &bundle->plane_infos[planes_count];
76247624
7625− fill_dc_dirty_rects(plane, old_plane_state, new_plane_state,
7626− new_crtc_state,
7627− &bundle->flip_addrs[planes_count]);
7625+ if (acrtc_state->stream->link->psr_settings.psr_feature_enabled)
7626+ fill_dc_dirty_rects(plane, old_plane_state,
7627+ new_plane_state, new_crtc_state,
7628+ &bundle->flip_addrs[planes_count]);
76287629
76297630 /*
76307631 * 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
363363 .wm_inst = WM_A,
364364 .wm_type = WM_TYPE_PSTATE_CHG,
365365 .pstate_latency_us = 11.72,
366− .sr_exit_time_us = 9,
367− .sr_enter_plus_exit_time_us = 11,
366+ .sr_exit_time_us = 12.5,
367+ .sr_enter_plus_exit_time_us = 14.5,
368368 .valid = true,
369369 },
370370 {
371371 .wm_inst = WM_B,
372372 .wm_type = WM_TYPE_PSTATE_CHG,
373373 .pstate_latency_us = 11.72,
374− .sr_exit_time_us = 9,
375− .sr_enter_plus_exit_time_us = 11,
374+ .sr_exit_time_us = 12.5,
375+ .sr_enter_plus_exit_time_us = 14.5,
376376 .valid = true,
377377 },
378378 {
379379 .wm_inst = WM_C,
380380 .wm_type = WM_TYPE_PSTATE_CHG,
381381 .pstate_latency_us = 11.72,
382− .sr_exit_time_us = 9,
383− .sr_enter_plus_exit_time_us = 11,
382+ .sr_exit_time_us = 12.5,
383+ .sr_enter_plus_exit_time_us = 14.5,
384384 .valid = true,
385385 },
386386 {
387387 .wm_inst = WM_D,
388388 .wm_type = WM_TYPE_PSTATE_CHG,
389389 .pstate_latency_us = 11.72,
390− .sr_exit_time_us = 9,
391− .sr_enter_plus_exit_time_us = 11,
390+ .sr_exit_time_us = 12.5,
391+ .sr_enter_plus_exit_time_us = 14.5,
392392 .valid = true,
393393 },
394394 }
@@ -400,32 +400,32 @@ static struct wm_table lpddr5_wm_table = { · 5 unmodified lines
400400 .wm_inst = WM_A,
401401 .wm_type = WM_TYPE_PSTATE_CHG,
402402 .pstate_latency_us = 11.65333,
403− .sr_exit_time_us = 11.5,
404− .sr_enter_plus_exit_time_us = 14.5,
403+ .sr_exit_time_us = 16.5,
404+ .sr_enter_plus_exit_time_us = 18.5,
405405 .valid = true,
406406 },
407407 {
408408 .wm_inst = WM_B,
409409 .wm_type = WM_TYPE_PSTATE_CHG,
410410 .pstate_latency_us = 11.65333,
411− .sr_exit_time_us = 11.5,
412− .sr_enter_plus_exit_time_us = 14.5,
411+ .sr_exit_time_us = 16.5,
412+ .sr_enter_plus_exit_time_us = 18.5,
413413 .valid = true,
414414 },
415415 {
416416 .wm_inst = WM_C,
417417 .wm_type = WM_TYPE_PSTATE_CHG,
418418 .pstate_latency_us = 11.65333,
419− .sr_exit_time_us = 11.5,
420− .sr_enter_plus_exit_time_us = 14.5,
419+ .sr_exit_time_us = 16.5,
420+ .sr_enter_plus_exit_time_us = 18.5,
421421 .valid = true,
422422 },
423423 {
424424 .wm_inst = WM_D,
425425 .wm_type = WM_TYPE_PSTATE_CHG,
426426 .pstate_latency_us = 11.65333,
427− .sr_exit_time_us = 11.5,
428− .sr_enter_plus_exit_time_us = 14.5,
427+ .sr_exit_time_us = 16.5,
428+ .sr_enter_plus_exit_time_us = 18.5,
429429 .valid = true,
430430 },
431431 }
drivers/gpu/drm/amd/display/dc/dc.h+1−0
@@ -853,6 +853,7 @@ struct dc_debug_options { · 852 unmodified lines
853853 bool enable_dp_dig_pixel_rate_div_policy;
854854 enum lttpr_mode lttpr_mode_override;
855855 unsigned int dsc_delay_factor_wa_x1000;
856+ unsigned int min_prefetch_in_strobe_ns;
856857 };
857858
858859 struct 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
4949 #define CTX \
5050 enc1->base.ctx
5151
52+static 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+}
5266
5367 static void enc314_enable_fifo(struct stream_encoder *enc)
5468 {
5569 struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
5670
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);
5971 REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_READ_START_LEVEL, 0x7);
60− REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_RESET, 1);
61− REG_WAIT(DIG_FIFO_CTRL0, DIG_FIFO_RESET_DONE, 1, 10, 5000);
62− REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_RESET, 0);
63− REG_WAIT(DIG_FIFO_CTRL0, DIG_FIFO_RESET_DONE, 0, 10, 5000);
72+
73+ enc314_reset_fifo(enc, true);
74+ enc314_reset_fifo(enc, false);
75+
6476 REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_ENABLE, 1);
6577 }
6678
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
724724 .enable_dp_dig_pixel_rate_div_policy = 1,
725725 .allow_sw_cursor_fallback = false,
726726 .alloc_extra_way_for_cursor = true,
727+ .min_prefetch_in_strobe_ns = 60000, // 60us
727728 };
728729
729730 static 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
722722 .enable_dp_dig_pixel_rate_div_policy = 1,
723723 .allow_sw_cursor_fallback = false,
724724 .alloc_extra_way_for_cursor = true,
725+ .min_prefetch_in_strobe_ns = 60000, // 60us
725726 };
726727
727728 static 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
146146 },
147147 },
148148 .num_states = 5,
149− .sr_exit_time_us = 9.0,
150− .sr_enter_plus_exit_time_us = 11.0,
149+ .sr_exit_time_us = 16.5,
150+ .sr_enter_plus_exit_time_us = 18.5,
151151 .sr_exit_z8_time_us = 442.0,
152152 .sr_enter_plus_exit_z8_time_us = 560.0,
153153 .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
23642364 /* DML DSC delay factor workaround */
23652365 dcn3_2_ip.dsc_delay_factor_wa = dc->debug.dsc_delay_factor_wa_x1000 / 1000.0;
23662366
2367+ dcn3_2_ip.min_prefetch_in_strobe_us = dc->debug.min_prefetch_in_strobe_ns / 1000.0;
2368+
23672369 /* Override dispclk_dppclk_vco_speed_mhz from Clk Mgr */
23682370 dcn3_2_soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0;
23692371 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
786786 v->SwathHeightY[k],
787787 v->SwathHeightC[k],
788788 TWait,
789+ v->DRAMSpeedPerState[mode_lib->vba.VoltageLevel] <= MEM_STROBE_FREQ_MHZ ?
790+ mode_lib->vba.ip.min_prefetch_in_strobe_us : 0,
789791 /* Output */
790792 &v->DSTXAfterScaler[k],
791793 &v->DSTYAfterScaler[k],
@@ -3192,6 +3194,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l · 2400 unmodified lines
31923194 mode_lib->vba.FCLKChangeLatency, mode_lib->vba.UrgLatency[i],
31933195 mode_lib->vba.SREnterPlusExitTime);
31943196
3197+ memset(&v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull, 0, sizeof(DmlPipe));
31953198 v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dppclk = mode_lib->vba.RequiredDPPCLK[i][j][k];
31963199 v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dispclk = mode_lib->vba.RequiredDISPCLK[i][j];
31973200 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
32443247 v->swath_width_chroma_ub_this_state[k],
32453248 v->SwathHeightYThisState[k],
32463249 v->SwathHeightCThisState[k], v->TWait,
3250+ v->DRAMSpeedPerState[i] <= MEM_STROBE_FREQ_MHZ ?
3251+ mode_lib->vba.ip.min_prefetch_in_strobe_us : 0,
32473252
32483253 /* Output */
32493254 &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
4949 #define BPP_INVALID 0
5050 #define BPP_BLENDED_PIPE 0xffffffff
5151
52+#define MEM_STROBE_FREQ_MHZ 1600
53+#define MEM_STROBE_MAX_DELIVERY_TIME_US 60.0
54+
5255 struct display_mode_lib;
5356
5457 void 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
34173417 unsigned int SwathHeightY,
34183418 unsigned int SwathHeightC,
34193419 double TWait,
3420+ double TPreReq,
34203421 /* Output */
34213422 double *DSTXAfterScaler,
34223423 double *DSTYAfterScaler,
@@ -3474,6 +3475,7 @@ bool dml32_CalculatePrefetchSchedule( · 51 unmodified lines
34743475 double min_Lsw;
34753476 double Tsw_est1 = 0;
34763477 double Tsw_est3 = 0;
3478+ double TPreMargin = 0;
34773479
34783480 if (v->GPUVMEnable == true && v->HostVMEnable == true)
34793481 HostVMDynamicLevelsTrips = v->HostVMMaxNonCachedPageTableLevels;
@@ -3699,6 +3701,8 @@ bool dml32_CalculatePrefetchSchedule( · 219 unmodified lines
36993701
37003702 dst_y_prefetch_equ = dml_floor(4.0 * (dst_y_prefetch_equ + 0.125), 1) / 4.0;
37013703 Tpre_rounded = dst_y_prefetch_equ * LineTime;
3704+
3705+ TPreMargin = Tpre_rounded - TPreReq;
37023706 #ifdef __DML_VBA_DEBUG__
37033707 dml_print("DML::%s: dst_y_prefetch_equ: %f (after round)\n", __func__, dst_y_prefetch_equ);
37043708 dml_print("DML::%s: LineTime: %f\n", __func__, LineTime);
@@ -3726,7 +3730,7 @@ bool dml32_CalculatePrefetchSchedule( · 21 unmodified lines
37263730 *VRatioPrefetchY = 0;
37273731 *VRatioPrefetchC = 0;
37283732 *RequiredPrefetchPixDataBWLuma = 0;
3729− if (dst_y_prefetch_equ > 1) {
3733+ if (dst_y_prefetch_equ > 1 && TPreMargin > 0.0) {
37303734 double PrefetchBandwidth1;
37313735 double PrefetchBandwidth2;
37323736 double PrefetchBandwidth3;
@@ -3872,7 +3876,11 @@ bool dml32_CalculatePrefetchSchedule( · 139 unmodified lines
38723876 }
38733877
38743878 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+ }
38763884 TimeForFetchingMetaPTE = Tvm_oto;
38773885 TimeForFetchingRowInVBlank = Tr0_oto;
38783886 *PrefetchBandwidth = prefetch_bw_oto;
@@ -4397,7 +4405,7 @@ void dml32_CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport( · 518 unmodified lines
43974405
43984406 if (v->NumberOfActiveSurfaces > 1) {
43994407 ActiveClockChangeLatencyHidingY = ActiveClockChangeLatencyHidingY
4400− - (1 - 1 / v->NumberOfActiveSurfaces) * SwathHeightY[k] * v->HTotal[k]
4408+ - (1.0 - 1.0 / v->NumberOfActiveSurfaces) * SwathHeightY[k] * v->HTotal[k]
44014409 / v->PixelClock[k] / v->VRatio[k];
44024410 }
44034411
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h+2−1
@@ -30,7 +30,7 @@ · 29 unmodified lines
3030 #include "os_types.h"
3131 #include "../dc_features.h"
3232 #include "../display_mode_structs.h"
33−#include "dml/display_mode_vba.h"
33+#include "../display_mode_vba.h"
3434
3535 unsigned int dml32_dscceComputeDelay(
3636 unsigned int bpc,
@@ -743,6 +743,7 @@ bool dml32_CalculatePrefetchSchedule( · 706 unmodified lines
743743 unsigned int SwathHeightY,
744744 unsigned int SwathHeightC,
745745 double TWait,
746+ double TPreReq,
746747 /* Output */
747748 double *DSTXAfterScaler,
748749 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
544544 /* DML DSC delay factor workaround */
545545 dcn3_21_ip.dsc_delay_factor_wa = dc->debug.dsc_delay_factor_wa_x1000 / 1000.0;
546546
547+ dcn3_21_ip.min_prefetch_in_strobe_us = dc->debug.min_prefetch_in_strobe_ns / 1000.0;
548+
547549 /* Override dispclk_dppclk_vco_speed_mhz from Clk Mgr */
548550 dcn3_21_soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0;
549551 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
367367
368368 /* DM workarounds */
369369 double dsc_delay_factor_wa; // TODO: Remove after implementing root cause fix
370+ double min_prefetch_in_strobe_us;
370371 };
371372
372373 struct _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
107107 ddc_data_regs_dcn2(3),
108108 ddc_data_regs_dcn2(4),
109109 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+ },
110117 {
111118 DDC_GPIO_VGA_REG_LIST(DATA),
112119 .ddc_setup = 0,
@@ -121,6 +128,13 @@ static const struct ddc_registers ddc_clk_regs_dcn[] = { · 8 unmodified lines
121128 ddc_clk_regs_dcn2(3),
122129 ddc_clk_regs_dcn2(4),
123130 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+ },
124138 {
125139 DDC_GPIO_VGA_REG_LIST(CLK),
126140 .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
9494 * is required for detection of AUX mode */
9595 if (hw_gpio->base.en != GPIO_DDC_LINE_VIP_PAD) {
9696 if (!ddc_data_pd_en || !ddc_clk_pd_en) {
97−
98− REG_SET_2(gpio.MASK_reg, regval,
97+ if (hw_gpio->base.en == GPIO_DDC_LINE_DDC_VGA) {
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,
99102 DC_GPIO_DDC1DATA_PD_EN, 1,
100103 DC_GPIO_DDC1CLK_PD_EN, 1);
101−
104+ }
102105 if (config_data->type ==
103106 GPIO_CONFIG_TYPE_I2C_AUX_DUAL_MODE)
104107 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
6767 int vega10_fan_ctrl_get_fan_speed_pwm(struct pp_hwmgr *hwmgr,
6868 uint32_t *speed)
6969 {
70− uint32_t current_rpm;
71− uint32_t percent = 0;
72−
73− if (hwmgr->thermal_controller.fanInfo.bNoFan)
74− return 0;
70+ struct amdgpu_device *adev = hwmgr->adev;
71+ uint32_t duty100, duty;
72+ uint64_t tmp64;
7573
76− if (vega10_get_current_rpm(hwmgr, &current_rpm))
77− return -1;
74+ duty100 = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_FDO_CTRL1),
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);
7878
79− if (hwmgr->thermal_controller.
80− advanceFanControlParameters.usMaxFanRPM != 0)
81− percent = current_rpm * 255 /
82− hwmgr->thermal_controller.
83− advanceFanControlParameters.usMaxFanRPM;
79+ if (!duty100)
80+ return -EINVAL;
8481
85− *speed = MIN(percent, 255);
82+ tmp64 = (uint64_t)duty * 255;
83+ do_div(tmp64, duty100);
84+ *speed = MIN((uint32_t)tmp64, 255);
8685
8786 return 0;
8887 }
drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu_v13_0_4_ppsmc.h+7−8
@@ -54,14 +54,14 @@ · 53 unmodified lines
5454 #define PPSMC_MSG_TestMessage 0x01 ///< To check if PMFW is alive and responding. Requirement specified by PMFW team
5555 #define PPSMC_MSG_GetPmfwVersion 0x02 ///< Get PMFW version
5656 #define PPSMC_MSG_GetDriverIfVersion 0x03 ///< Get PMFW_DRIVER_IF version
57−#define PPSMC_MSG_EnableGfxOff 0x04 ///< Enable GFXOFF
58−#define PPSMC_MSG_DisableGfxOff 0x05 ///< Disable GFXOFF
57+#define PPSMC_MSG_SPARE0 0x04 ///< SPARE
58+#define PPSMC_MSG_SPARE1 0x05 ///< SPARE
5959 #define PPSMC_MSG_PowerDownVcn 0x06 ///< Power down VCN
6060 #define PPSMC_MSG_PowerUpVcn 0x07 ///< Power up VCN; VCN is power gated by default
6161 #define PPSMC_MSG_SetHardMinVcn 0x08 ///< For wireless display
6262 #define PPSMC_MSG_SetSoftMinGfxclk 0x09 ///< Set SoftMin for GFXCLK, argument is frequency in MHz
63−#define PPSMC_MSG_ActiveProcessNotify 0x0A ///< Needs update
64−#define PPSMC_MSG_ForcePowerDownGfx 0x0B ///< Force power down GFX, i.e. enter GFXOFF
63+#define PPSMC_MSG_SPARE2 0x0A ///< SPARE
64+#define PPSMC_MSG_SPARE3 0x0B ///< SPARE
6565 #define PPSMC_MSG_PrepareMp1ForUnload 0x0C ///< Prepare PMFW for GFX driver unload
6666 #define PPSMC_MSG_SetDriverDramAddrHigh 0x0D ///< Set high 32 bits of DRAM address for Driver table transfer
6767 #define PPSMC_MSG_SetDriverDramAddrLow 0x0E ///< Set low 32 bits of DRAM address for Driver table transfer
@@ -73,8 +73,7 @@ · 5 unmodified lines
7373 #define PPSMC_MSG_SetSoftMinFclk 0x14 ///< Set hard min for FCLK
7474 #define PPSMC_MSG_SetSoftMinVcn 0x15 ///< Set soft min for VCN clocks (VCLK and DCLK)
7575
76−
77−#define PPSMC_MSG_EnableGfxImu 0x16 ///< Needs update
76+#define PPSMC_MSG_EnableGfxImu 0x16 ///< Enable GFX IMU
7877
7978 #define PPSMC_MSG_GetGfxclkFrequency 0x17 ///< Get GFX clock frequency
8079 #define PPSMC_MSG_GetFclkFrequency 0x18 ///< Get FCLK frequency
@@ -102,8 +101,8 @@ · 21 unmodified lines
102101 #define PPSMC_MSG_SetHardMinIspxclkByFreq 0x2C ///< Set HardMin by frequency for ISPXCLK
103102 #define PPSMC_MSG_PowerDownUmsch 0x2D ///< Power down VCN.UMSCH (aka VSCH) scheduler
104103 #define PPSMC_MSG_PowerUpUmsch 0x2E ///< Power up VCN.UMSCH (aka VSCH) scheduler
105−#define PPSMC_Message_IspStutterOn_MmhubPgDis 0x2F ///< ISP StutterOn mmHub PgDis
106−#define PPSMC_Message_IspStutterOff_MmhubPgEn 0x30 ///< ISP StufferOff mmHub PgEn
104+#define PPSMC_MSG_IspStutterOn_MmhubPgDis 0x2F ///< ISP StutterOn mmHub PgDis
105+#define PPSMC_MSG_IspStutterOff_MmhubPgEn 0x30 ///< ISP StufferOff mmHub PgEn
107106
108107 #define PPSMC_Message_Count 0x31 ///< Total number of PPSMC messages
109108 /** @}*/
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
377377 if (((adev->pdev->device == 0x73A1) &&
378378 (adev->pdev->revision == 0x00)) ||
379379 ((adev->pdev->device == 0x73BF) &&
380− (adev->pdev->revision == 0xCF)))
380+ (adev->pdev->revision == 0xCF)) ||
381+ ((adev->pdev->device == 0x7422) &&
382+ (adev->pdev->revision == 0x00)))
381383 smu_baco->platform_support = false;
382384
383385 }
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
134134 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "One S1003"),
135135 },
136136 .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,
137143 }, { /* Anbernic Win600 */
138144 .matches = {
139145 DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Anbernic"),
@@ -319,6 +325,12 @@ static const struct dmi_system_id orientation_data[] = { · 179 unmodified lines
319325 DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"),
320326 },
321327 .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,
322334 }, { /* OneGX1 Pro */
323335 .matches = {
324336 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
22012201 if (intel_dp->psr.psr2_sel_fetch_enabled) {
22022202 u32 val;
22032203
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);
22052207 return;
2208+ }
22062209
22072210 val = man_trk_ctl_enable_bit_get(dev_priv) |
22082211 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
4040 goto err;
4141 }
4242
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);
4444 if (ret)
4545 goto err_free;
4646
4747 src = obj->mm.pages->sgl;
4848 dst = st->sgl;
49− for (i = 0; i < obj->mm.pages->nents; i++) {
49+ for (i = 0; i < obj->mm.pages->orig_nents; i++) {
5050 sg_set_page(dst, sg_page(src), src->length, 0);
5151 dst = sg_next(dst);
5252 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
369369
370370 __start_cpu_write(obj);
371371 /*
372− * On non-LLC platforms, force the flush-on-acquire if this is ever
372+ * On non-LLC igfx platforms, force the flush-on-acquire if this is ever
373373 * swapped-in. Our async flush path is not trust worthy enough yet(and
374374 * happens in the wrong order), and with some tricks it's conceivable
375375 * for userspace to change the cache-level to I915_CACHE_NONE after the
376376 * pages are swapped-in, and since execbuf binds the object before doing
377377 * the async flush, we have a race window.
378378 */
379− if (!HAS_LLC(i915))
379+ if (!HAS_LLC(i915) && !IS_DGFX(i915))
380380 obj->cache_dirty = true;
381381 }
382382
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
428428 {
429429 VMA_ITERATOR(vmi, mm, addr);
430430 struct vm_area_struct *vma;
431+ unsigned long end = addr + len;
431432
432433 mmap_read_lock(mm);
433− for_each_vma_range(vmi, vma, addr + len) {
434+ for_each_vma_range(vmi, vma, end) {
434435 /* Check for holes, note that we also update the addr below */
435436 if (vma->vm_start > addr)
436437 break;
@@ -442,7 +443,7 @@ probe_range(struct mm_struct *mm, unsigned long addr, unsigned long len) · 5 unmodified lines
442443 }
443444 mmap_read_unlock(mm);
444445
445− if (vma)
446+ if (vma || addr < end)
446447 return -EFAULT;
447448 return 0;
448449 }
drivers/gpu/drm/panfrost/panfrost_mmu.c+10−1
@@ -250,13 +250,22 @@ void panfrost_mmu_reset(struct panfrost_device *pfdev) · 249 unmodified lines
250250
251251 static size_t get_pgsize(u64 addr, size_t size, size_t *count)
252252 {
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+ */
253261 size_t blk_offset = -addr % SZ_2M;
254262
255263 if (blk_offset || size < SZ_2M) {
256264 *count = min_not_zero(blk_offset, size) / SZ_4K;
257265 return SZ_4K;
258266 }
259− *count = size / SZ_2M;
267+ blk_offset = -addr % SZ_1G ?: SZ_1G;
268+ *count = min(blk_offset, size) / SZ_2M;
260269 return SZ_2M;
261270 }
262271
drivers/gpu/drm/rcar-du/Kconfig+9−4
@@ -44,13 +44,18 @@ config DRM_RCAR_LVDS · 43 unmodified lines
4444 select OF_FLATTREE
4545 select OF_OVERLAY
4646
47−config DRM_RCAR_MIPI_DSI
48− tristate "R-Car DU MIPI DSI Encoder Support"
49− depends on DRM && DRM_BRIDGE && OF
50− select DRM_MIPI_DSI
47+config DRM_RCAR_USE_MIPI_DSI
48+ bool "R-Car DU MIPI DSI Encoder Support"
49+ depends on DRM_BRIDGE && OF
50+ default DRM_RCAR_DU
5151 help
5252 Enable support for the R-Car Display Unit embedded MIPI DSI encoders.
5353
54+config DRM_RCAR_MIPI_DSI
55+ def_tristate DRM_RCAR_DU
56+ depends on DRM_RCAR_USE_MIPI_DSI
57+ select DRM_MIPI_DSI
58+
5459 config DRM_RCAR_VSP
5560 bool "R-Car DU VSP Compositor Support" if ARM
5661 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
476476 if (ret)
477477 return ret;
478478
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;
480485 }
481486
482487 static 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
349349 if (!crtc_state->active)
350350 return 0;
351351
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);
353356 return 0;
357+ }
354358
355359 scrambling_needed = vc4_hdmi_mode_needs_scrambling(&vc4_hdmi->saved_adjusted_mode,
356360 vc4_hdmi->output_bpc,
357361 vc4_hdmi->output_format);
358− if (!scrambling_needed)
362+ if (!scrambling_needed) {
363+ mutex_unlock(&vc4_hdmi->mutex);
359364 return 0;
365+ }
360366
361367 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);
363370 return 0;
371+ }
364372
365373 ret = drm_scdc_readb(connector->ddc, SCDC_TMDS_CONFIG, &config);
366374 if (ret < 0) {
367375 drm_err(drm, "Failed to read TMDS config: %d\n", ret);
376+ mutex_unlock(&vc4_hdmi->mutex);
368377 return 0;
369378 }
370379
371− if (!!(config & SCDC_SCRAMBLING_ENABLE) == scrambling_needed)
380+ if (!!(config & SCDC_SCRAMBLING_ENABLE) == scrambling_needed) {
381+ mutex_unlock(&vc4_hdmi->mutex);
372382 return 0;
383+ }
384+
385+ mutex_unlock(&vc4_hdmi->mutex);
373386
374387 /*
375388 * 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
397410 * .adap_enable, which leads to that funtion being called with
398411 * our mutex held.
399412 *
400− * A similar situation occurs with
401− * drm_atomic_helper_connector_hdmi_reset_link() that will call
402− * into our KMS hooks if the scrambling was enabled.
413+ * A similar situation occurs with vc4_hdmi_reset_link() that
414+ * will call into our KMS hooks if the scrambling was enabled.
403415 *
404416 * Concurrency isn't an issue at the moment since we don't share
405417 * 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
31603172 DRM_ERROR("Failed to get HDMI state machine clock\n");
31613173 return PTR_ERR(vc4_hdmi->hsm_clock);
31623174 }
3175+
31633176 vc4_hdmi->audio_clock = vc4_hdmi->hsm_clock;
31643177 vc4_hdmi->cec_clock = vc4_hdmi->hsm_clock;
31653178
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+
31663185 return 0;
31673186 }
31683187
@@ -3245,6 +3264,12 @@ static int vc5_hdmi_init_resources(struct drm_device *drm, · 76 unmodified lines
32453264 return PTR_ERR(vc4_hdmi->hsm_clock);
32463265 }
32473266
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+
32483273 vc4_hdmi->pixel_bvb_clock = devm_clk_get(dev, "bvb");
32493274 if (IS_ERR(vc4_hdmi->pixel_bvb_clock)) {
32503275 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
33083333 {
33093334 struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
33103335
3311− clk_disable_unprepare(vc4_hdmi->hsm_clock);
3336+ clk_disable_unprepare(vc4_hdmi->hsm_rpm_clock);
33123337
33133338 return 0;
33143339 }
@@ -3326,11 +3351,11 @@ static int vc4_hdmi_runtime_resume(struct device *dev) · 11 unmodified lines
33263351 * its frequency while the power domain is active so that it
33273352 * keeps its rate.
33283353 */
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);
33303355 if (ret)
33313356 return ret;
33323357
3333− ret = clk_prepare_enable(vc4_hdmi->hsm_clock);
3358+ ret = clk_prepare_enable(vc4_hdmi->hsm_rpm_clock);
33343359 if (ret)
33353360 return ret;
33363361
@@ -3343,7 +3368,7 @@ static int vc4_hdmi_runtime_resume(struct device *dev) · 6 unmodified lines
33433368 * case, it will lead to a silent CPU stall. Let's make sure we
33443369 * prevent such a case.
33453370 */
3346− rate = clk_get_rate(vc4_hdmi->hsm_clock);
3371+ rate = clk_get_rate(vc4_hdmi->hsm_rpm_clock);
33473372 if (!rate) {
33483373 ret = -EINVAL;
33493374 goto err_disable_clk;
drivers/gpu/drm/vc4/vc4_hdmi.h+1−0
@@ -172,6 +172,7 @@ struct vc4_hdmi { · 171 unmodified lines
172172 struct clk *cec_clock;
173173 struct clk *pixel_clock;
174174 struct clk *hsm_clock;
175+ struct clk *hsm_rpm_clock;
175176 struct clk *audio_clock;
176177 struct clk *pixel_bvb_clock;
177178
drivers/hid/hid-asus.c+1−3
@@ -219,14 +219,13 @@ static void asus_report_tool_width(struct asus_drvdata *drvdat) · 218 unmodified lines
219219 {
220220 struct input_mt *mt = drvdat->input->mt;
221221 struct input_mt_slot *oldest;
222− int oldid, count, i;
222+ int oldid, i;
223223
224224 if (drvdat->tp->contact_size < 5)
225225 return;
226226
227227 oldest = NULL;
228228 oldid = mt->trkid;
229− count = 0;
230229
231230 for (i = 0; i < mt->num_slots; ++i) {
232231 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
238237 oldest = ps;
239238 oldid = id;
240239 }
241− count++;
242240 }
243241
244242 if (oldest) {
drivers/hid/hid-hyperv.c+1−1
@@ -499,7 +499,7 @@ static int mousevsc_probe(struct hv_device *device, · 498 unmodified lines
499499
500500 ret = hid_add_device(hid_dev);
501501 if (ret)
502− goto probe_err1;
502+ goto probe_err2;
503503
504504
505505 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
25202520
25212521 if (!delay_pen_events(wacom_wac) && wacom_wac->tool[0]) {
25222522 int id = wacom_wac->id[0];
2523− if (wacom_wac->features.quirks & WACOM_QUIRK_PEN_BUTTON3 &&
2524− wacom_wac->hid_data.barrelswitch & wacom_wac->hid_data.barrelswitch2) {
2525− wacom_wac->hid_data.barrelswitch = 0;
2526− wacom_wac->hid_data.barrelswitch2 = 0;
2527− wacom_wac->hid_data.barrelswitch3 = 1;
2523+ if (wacom_wac->features.quirks & WACOM_QUIRK_PEN_BUTTON3) {
2524+ int sw_state = wacom_wac->hid_data.barrelswitch |
2525+ (wacom_wac->hid_data.barrelswitch2 << 1);
2526+ wacom_wac->hid_data.barrelswitch = sw_state == 1;
2527+ wacom_wac->hid_data.barrelswitch2 = sw_state == 2;
2528+ wacom_wac->hid_data.barrelswitch3 = sw_state == 3;
25282529 }
25292530 input_report_key(input, BTN_STYLUS, wacom_wac->hid_data.barrelswitch);
25302531 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
905905 * We have some residual hot add range
906906 * that needs to be hot added; hot add
907907 * it now. Hot add a multiple of
908− * of HA_CHUNK that fully covers the pages
908+ * HA_CHUNK that fully covers the pages
909909 * we have.
910910 */
911911 size = (has->end_pfn - has->ha_end_pfn);
drivers/hwspinlock/qcom_hwspinlock.c+32−10
@@ -22,6 +22,7 @@ · 21 unmodified lines
2222 struct qcom_hwspinlock_of_data {
2323 u32 offset;
2424 u32 stride;
25+ const struct regmap_config *regmap_config;
2526 };
2627
2728 static int qcom_hwspinlock_trylock(struct hwspinlock *lock)
@@ -73,15 +74,42 @@ static const struct qcom_hwspinlock_of_data of_sfpb_mutex = { · 45 unmodified lines
7374 .stride = 0x4,
7475 };
7576
76−/* All modern platform has offset 0 and stride of 4k */
77+static 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+
85+static 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+
91+static 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+
7799 static const struct qcom_hwspinlock_of_data of_tcsr_mutex = {
78100 .offset = 0,
79101 .stride = 0x1000,
102+ .regmap_config = &tcsr_mutex_config,
80103 };
81104
82105 static const struct of_device_id qcom_hwspinlock_of_match[] = {
83106 { .compatible = "qcom,sfpb-mutex", .data = &of_sfpb_mutex },
84107 { .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 },
85113 { }
86114 };
87115 MODULE_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
117145 return regmap;
118146 }
119147
120−static 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−
128148 static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev,
129149 u32 *offset, u32 *stride)
130150 {
@@ -133,6 +153,8 @@ static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev, · 2 unmodified lines
133153 void __iomem *base;
134154
135155 data = of_device_get_match_data(dev);
156+ if (!data->regmap_config)
157+ return ERR_PTR(-EINVAL);
136158
137159 *offset = data->offset;
138160 *stride = data->stride;
@@ -141,7 +163,7 @@ static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev, · 2 unmodified lines
141163 if (IS_ERR(base))
142164 return ERR_CAST(base);
143165
144− return devm_regmap_init_mmio(dev, base, &tcsr_mutex_config);
166+ return devm_regmap_init_mmio(dev, base, data->regmap_config);
145167 }
146168
147169 static int qcom_hwspinlock_probe(struct platform_device *pdev)
drivers/mmc/host/sdhci-brcmstb.c+2−1
@@ -12,6 +12,7 @@ · 11 unmodified lines
1212 #include <linux/bitops.h>
1313 #include <linux/delay.h>
1414
15+#include "sdhci-cqhci.h"
1516 #include "sdhci-pltfm.h"
1617 #include "cqhci.h"
1718
@@ -55,7 +56,7 @@ static void brcmstb_reset(struct sdhci_host *host, u8 mask) · 37 unmodified lines
5556 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
5657 struct sdhci_brcmstb_priv *priv = sdhci_pltfm_priv(pltfm_host);
5758
58− sdhci_reset(host, mask);
59+ sdhci_and_cqhci_reset(host, mask);
5960
6061 /* Reset will clear this, so re-enable it */
6162 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+
15+static 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
2525 #include <linux/of_device.h>
2626 #include <linux/pinctrl/consumer.h>
2727 #include <linux/pm_runtime.h>
28+#include "sdhci-cqhci.h"
2829 #include "sdhci-pltfm.h"
2930 #include "sdhci-esdhc.h"
3031 #include "cqhci.h"
@@ -1288,7 +1289,7 @@ static void esdhc_set_uhs_signaling(struct sdhci_host *host, unsigned timing) · 1257 unmodified lines
12881289
12891290 static void esdhc_reset(struct sdhci_host *host, u8 mask)
12901291 {
1291− sdhci_reset(host, mask);
1292+ sdhci_and_cqhci_reset(host, mask);
12921293
12931294 sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
12941295 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
16711672 if (imx_data->socdata->flags & ESDHC_FLAG_ERR004536)
16721673 host->quirks |= SDHCI_QUIRK_BROKEN_ADMA;
16731674
1674− if (host->caps & MMC_CAP_8_BIT_DATA &&
1675+ if (host->mmc->caps & MMC_CAP_8_BIT_DATA &&
16751676 imx_data->socdata->flags & ESDHC_FLAG_HS400)
16761677 host->mmc->caps2 |= MMC_CAP2_HS400;
16771678
16781679 if (imx_data->socdata->flags & ESDHC_FLAG_BROKEN_AUTO_CMD23)
16791680 host->quirks2 |= SDHCI_QUIRK2_ACMD23_BROKEN;
16801681
1681− if (host->caps & MMC_CAP_8_BIT_DATA &&
1682+ if (host->mmc->caps & MMC_CAP_8_BIT_DATA &&
16821683 imx_data->socdata->flags & ESDHC_FLAG_HS400_ES) {
16831684 host->mmc->caps2 |= MMC_CAP2_HS400_ES;
16841685 host->mmc_host_ops.hs400_enhanced_strobe =
drivers/mmc/host/sdhci-of-arasan.c+2−1
@@ -25,6 +25,7 @@ · 24 unmodified lines
2525 #include <linux/firmware/xlnx-zynqmp.h>
2626
2727 #include "cqhci.h"
28+#include "sdhci-cqhci.h"
2829 #include "sdhci-pltfm.h"
2930
3031 #define SDHCI_ARASAN_VENDOR_REGISTER 0x78
@@ -366,7 +367,7 @@ static void sdhci_arasan_reset(struct sdhci_host *host, u8 mask) · 335 unmodified lines
366367 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
367368 struct sdhci_arasan_data *sdhci_arasan = sdhci_pltfm_priv(pltfm_host);
368369
369− sdhci_reset(host, mask);
370+ sdhci_and_cqhci_reset(host, mask);
370371
371372 if (sdhci_arasan->quirks & SDHCI_ARASAN_QUIRK_FORCE_CDTEST) {
372373 ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
drivers/mmc/host/sdhci-tegra.c+2−1
@@ -28,6 +28,7 @@ · 27 unmodified lines
2828
2929 #include <soc/tegra/common.h>
3030
31+#include "sdhci-cqhci.h"
3132 #include "sdhci-pltfm.h"
3233 #include "cqhci.h"
3334
@@ -367,7 +368,7 @@ static void tegra_sdhci_reset(struct sdhci_host *host, u8 mask) · 333 unmodified lines
367368 const struct sdhci_tegra_soc_data *soc_data = tegra_host->soc_data;
368369 u32 misc_ctrl, clk_ctrl, pad_ctrl;
369370
370− sdhci_reset(host, mask);
371+ sdhci_and_cqhci_reset(host, mask);
371372
372373 if (!(mask & SDHCI_RESET_ALL))
373374 return;
drivers/mmc/host/sdhci_am654.c+4−3
@@ -15,6 +15,7 @@ · 14 unmodified lines
1515 #include <linux/sys_soc.h>
1616
1717 #include "cqhci.h"
18+#include "sdhci-cqhci.h"
1819 #include "sdhci-pltfm.h"
1920
2021 /* CTL_CFG Registers */
@@ -378,7 +379,7 @@ static void sdhci_am654_reset(struct sdhci_host *host, u8 mask) · 357 unmodified lines
378379 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
379380 struct sdhci_am654_data *sdhci_am654 = sdhci_pltfm_priv(pltfm_host);
380381
381− sdhci_reset(host, mask);
382+ sdhci_and_cqhci_reset(host, mask);
382383
383384 if (sdhci_am654->quirks & SDHCI_AM654_QUIRK_FORCE_CDTEST) {
384385 ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
@@ -464,7 +465,7 @@ static struct sdhci_ops sdhci_am654_ops = { · 79 unmodified lines
464465 .set_clock = sdhci_am654_set_clock,
465466 .write_b = sdhci_am654_write_b,
466467 .irq = sdhci_am654_cqhci_irq,
467− .reset = sdhci_reset,
468+ .reset = sdhci_and_cqhci_reset,
468469 };
469470
470471 static const struct sdhci_pltfm_data sdhci_am654_pdata = {
@@ -494,7 +495,7 @@ static struct sdhci_ops sdhci_j721e_8bit_ops = { · 23 unmodified lines
494495 .set_clock = sdhci_am654_set_clock,
495496 .write_b = sdhci_am654_write_b,
496497 .irq = sdhci_am654_cqhci_irq,
497− .reset = sdhci_reset,
498+ .reset = sdhci_and_cqhci_reset,
498499 };
499500
500501 static 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
452452 unsigned int mb, prio;
453453 u32 reg_mid, reg_mcr;
454454
455− if (can_dropped_invalid_skb(dev, skb))
455+ if (can_dev_dropped_skb(dev, skb))
456456 return NETDEV_TX_OK;
457457
458458 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
457457 struct c_can_tx_ring *tx_ring = &priv->tx;
458458 u32 idx, obj, cmd = IF_COMM_TX;
459459
460− if (can_dropped_invalid_skb(dev, skb))
460+ if (can_dev_dropped_skb(dev, skb))
461461 return NETDEV_TX_OK;
462462
463463 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
813813 struct can327 *elm = netdev_priv(dev);
814814 struct can_frame *frame = (struct can_frame *)skb->data;
815815
816− if (can_dropped_invalid_skb(dev, skb))
816+ if (can_dev_dropped_skb(dev, skb))
817817 return NETDEV_TX_OK;
818818
819819 /* 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
429429 struct cc770_priv *priv = netdev_priv(dev);
430430 unsigned int mo = obj2msgobj(CC770_OBJ_TX);
431431
432− if (can_dropped_invalid_skb(dev, skb))
432+ if (can_dev_dropped_skb(dev, skb))
433433 return NETDEV_TX_OK;
434434
435435 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
600600 bool ok;
601601 unsigned long flags;
602602
603− if (can_dropped_invalid_skb(ndev, skb))
603+ if (can_dev_dropped_skb(ndev, skb))
604604 return NETDEV_TX_OK;
605605
606606 if (unlikely(!CTU_CAN_FD_TXTNF(priv))) {
drivers/net/can/dev/skb.c+1−9
@@ -5,7 +5,6 @@ · 4 unmodified lines
55 */
66
77 #include <linux/can/dev.h>
8−#include <linux/can/netlink.h>
98 #include <linux/module.h>
109
1110 #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
337336 /* Drop a given socketbuffer if it does not contain a valid CAN frame. */
338337 bool can_dropped_invalid_skb(struct net_device *dev, struct sk_buff *skb)
339338 {
340− struct can_priv *priv = netdev_priv(dev);
341−
342339 switch (ntohs(skb->protocol)) {
343340 case ETH_P_CAN:
344341 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
359356 goto inval_skb;
360357 }
361358
362− if (!can_skb_headroom_valid(dev, skb)) {
359+ if (!can_skb_headroom_valid(dev, skb))
363360 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− }
369361
370362 return false;
371363
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
742742 u32 ctrl = FLEXCAN_MB_CODE_TX_DATA | ((can_fd_len2dlc(cfd->len)) << 16);
743743 int i;
744744
745− if (can_dropped_invalid_skb(dev, skb))
745+ if (can_dev_dropped_skb(dev, skb))
746746 return NETDEV_TX_OK;
747747
748748 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
13451345 unsigned long flags;
13461346 u32 oneshotmode = priv->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT;
13471347
1348− if (can_dropped_invalid_skb(dev, skb))
1348+ if (can_dev_dropped_skb(dev, skb))
13491349 return NETDEV_TX_OK;
13501350
13511351 /* 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
860860 u32 txst, txid, txdlc;
861861 int i;
862862
863− if (can_dropped_invalid_skb(ndev, skb))
863+ if (can_dev_dropped_skb(ndev, skb))
864864 return NETDEV_TX_OK;
865865
866866 /* 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
16931693 void __iomem *desc_addr;
16941694 unsigned long flags;
16951695
1696− if (can_dropped_invalid_skb(ndev, skb))
1696+ if (can_dev_dropped_skb(ndev, skb))
16971697 return NETDEV_TX_OK;
16981698
16991699 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
772772 int nwords;
773773 u8 count;
774774
775− if (can_dropped_invalid_skb(netdev, skb))
775+ if (can_dev_dropped_skb(netdev, skb))
776776 return NETDEV_TX_OK;
777777
778778 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
17211721 {
17221722 struct m_can_classdev *cdev = netdev_priv(dev);
17231723
1724− if (can_dropped_invalid_skb(dev, skb))
1724+ if (can_dev_dropped_skb(dev, skb))
17251725 return NETDEV_TX_OK;
17261726
17271727 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
191191 int i, rtr, buf_id;
192192 u32 can_id;
193193
194− if (can_dropped_invalid_skb(dev, skb))
194+ if (can_dev_dropped_skb(dev, skb))
195195 return NETDEV_TX_OK;
196196
197197 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
882882 int i;
883883 u32 id2;
884884
885− if (can_dropped_invalid_skb(ndev, skb))
885+ if (can_dev_dropped_skb(ndev, skb))
886886 return NETDEV_TX_OK;
887887
888888 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
651651 int room_left;
652652 u8 len;
653653
654− if (can_dropped_invalid_skb(ndev, skb))
654+ if (can_dev_dropped_skb(ndev, skb))
655655 return NETDEV_TX_OK;
656656
657657 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
590590 struct can_frame *cf = (struct can_frame *)skb->data;
591591 u32 data, i;
592592
593− if (can_dropped_invalid_skb(ndev, skb))
593+ if (can_dev_dropped_skb(ndev, skb))
594594 return NETDEV_TX_OK;
595595
596596 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
8181
8282 /* RSCFDnCFDGERFL / RSCFDnGERFL */
8383 #define RCANFD_GERFL_EEF0_7 GENMASK(23, 16)
84−#define RCANFD_GERFL_EEF1 BIT(17)
85−#define RCANFD_GERFL_EEF0 BIT(16)
84+#define RCANFD_GERFL_EEF(ch) BIT(16 + (ch))
8685 #define RCANFD_GERFL_CMPOF BIT(3) /* CAN FD only */
8786 #define RCANFD_GERFL_THLES BIT(2)
8887 #define RCANFD_GERFL_MES BIT(1)
@@ -90,7 +89,7 @@ enum rcanfd_chip_id { · 1 unmodified line
9089
9190 #define RCANFD_GERFL_ERR(gpriv, x) \
9291 ((x) & (reg_v3u(gpriv, RCANFD_GERFL_EEF0_7, \
93− RCANFD_GERFL_EEF0 | RCANFD_GERFL_EEF1) | \
92+ RCANFD_GERFL_EEF(0) | RCANFD_GERFL_EEF(1)) | \
9493 RCANFD_GERFL_MES | \
9594 ((gpriv)->fdmode ? RCANFD_GERFL_CMPOF : 0)))
9695
@@ -936,12 +935,8 @@ static void rcar_canfd_global_error(struct net_device *ndev) · 839 unmodified lines
936935 u32 ridx = ch + RCANFD_RFFIFO_IDX;
937936
938937 gerfl = rcar_canfd_read(priv->base, RCANFD_GERFL);
939− if ((gerfl & RCANFD_GERFL_EEF0) && (ch == 0)) {
940− netdev_dbg(ndev, "Ch0: ECC Error flag\n");
941− stats->tx_dropped++;
942− }
943− if ((gerfl & RCANFD_GERFL_EEF1) && (ch == 1)) {
944− netdev_dbg(ndev, "Ch1: ECC Error flag\n");
938+ if (gerfl & RCANFD_GERFL_EEF(ch)) {
939+ netdev_dbg(ndev, "Ch%u: ECC Error flag\n", ch);
945940 stats->tx_dropped++;
946941 }
947942 if (gerfl & RCANFD_GERFL_MES) {
@@ -1481,7 +1476,7 @@ static netdev_tx_t rcar_canfd_start_xmit(struct sk_buff *skb, · 533 unmodified lines
14811476 unsigned long flags;
14821477 u32 ch = priv->channel;
14831478
1484− if (can_dropped_invalid_skb(ndev, skb))
1479+ if (can_dev_dropped_skb(ndev, skb))
14851480 return NETDEV_TX_OK;
14861481
14871482 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
291291 u8 cmd_reg_val = 0x00;
292292 int i;
293293
294− if (can_dropped_invalid_skb(dev, skb))
294+ if (can_dev_dropped_skb(dev, skb))
295295 return NETDEV_TX_OK;
296296
297297 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
594594 {
595595 struct slcan *sl = netdev_priv(dev);
596596
597− if (can_dropped_invalid_skb(dev, skb))
597+ if (can_dev_dropped_skb(dev, skb))
598598 return NETDEV_TX_OK;
599599
600600 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
6060 struct can_frame *cf = (struct can_frame *)skb->data;
6161 uint8_t buf[DPRAM_TX_SIZE];
6262
63− if (can_dropped_invalid_skb(dev, skb))
63+ if (can_dev_dropped_skb(dev, skb))
6464 return NETDEV_TX_OK;
6565
6666 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
373373 return NETDEV_TX_BUSY;
374374 }
375375
376− if (can_dropped_invalid_skb(net, skb))
376+ if (can_dev_dropped_skb(net, skb))
377377 return NETDEV_TX_OK;
378378
379379 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
789789 return NETDEV_TX_BUSY;
790790 }
791791
792− if (can_dropped_invalid_skb(net, skb))
792+ if (can_dev_dropped_skb(net, skb))
793793 return NETDEV_TX_OK;
794794
795795 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
172172 u8 tx_head;
173173 int err;
174174
175− if (can_dropped_invalid_skb(ndev, skb))
175+ if (can_dev_dropped_skb(ndev, skb))
176176 return NETDEV_TX_OK;
177177
178178 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
429429 canid_t id;
430430 int i;
431431
432− if (can_dropped_invalid_skb(dev, skb))
432+ if (can_dev_dropped_skb(dev, skb))
433433 return NETDEV_TX_OK;
434434
435435 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
470470 u32 mbxno, mbx_mask, data;
471471 unsigned long flags;
472472
473− if (can_dropped_invalid_skb(ndev, skb))
473+ if (can_dev_dropped_skb(ndev, skb))
474474 return NETDEV_TX_OK;
475475
476476 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
747747 size_t size = CPC_HEADER_SIZE + CPC_MSG_HEADER_LEN
748748 + sizeof(struct cpc_can_msg);
749749
750− if (can_dropped_invalid_skb(netdev, skb))
750+ if (can_dev_dropped_skb(netdev, skb))
751751 return NETDEV_TX_OK;
752752
753753 /* 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
725725 int ret = NETDEV_TX_OK;
726726 size_t size = sizeof(struct esd_usb_msg);
727727
728− if (can_dropped_invalid_skb(netdev, skb))
728+ if (can_dev_dropped_skb(netdev, skb))
729729 return NETDEV_TX_OK;
730730
731731 /* 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
19131913 unsigned int frame_len;
19141914 int ret;
19151915
1916− if (can_dropped_invalid_skb(netdev, skb)) {
1916+ if (can_dev_dropped_skb(netdev, skb)) {
19171917 if (priv->tx_urb)
19181918 goto xmit_commit;
19191919 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
723723 unsigned int idx;
724724 struct gs_tx_context *txc;
725725
726− if (can_dropped_invalid_skb(netdev, skb))
726+ if (can_dev_dropped_skb(netdev, skb))
727727 return NETDEV_TX_OK;
728728
729729 /* 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
570570 unsigned int i;
571571 unsigned long flags;
572572
573− if (can_dropped_invalid_skb(netdev, skb))
573+ if (can_dev_dropped_skb(netdev, skb))
574574 return NETDEV_TX_OK;
575575
576576 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
311311 .cmd_id = MBCA_CMD_TRANSMIT_MESSAGE_EV
312312 };
313313
314− if (can_dropped_invalid_skb(netdev, skb))
314+ if (can_dev_dropped_skb(netdev, skb))
315315 return NETDEV_TX_OK;
316316
317317 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
351351 int i, err;
352352 size_t size = dev->adapter->tx_buffer_size;
353353
354− if (can_dropped_invalid_skb(netdev, skb))
354+ if (can_dev_dropped_skb(netdev, skb))
355355 return NETDEV_TX_OK;
356356
357357 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
11201120 struct can_frame *cf = (struct can_frame *)skb->data;
11211121
11221122 /* check skb */
1123− if (can_dropped_invalid_skb(netdev, skb))
1123+ if (can_dev_dropped_skb(netdev, skb))
11241124 return NETDEV_TX_OK;
11251125
11261126 /* 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
602602 int i, err;
603603 size_t size = sizeof(struct usb_8dev_tx_msg);
604604
605− if (can_dropped_invalid_skb(netdev, skb))
605+ if (can_dev_dropped_skb(netdev, skb))
606606 return NETDEV_TX_OK;
607607
608608 /* 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
743743 struct xcan_priv *priv = netdev_priv(ndev);
744744 int ret;
745745
746− if (can_dropped_invalid_skb(ndev, skb))
746+ if (can_dev_dropped_skb(ndev, skb))
747747 return NETDEV_TX_OK;
748748
749749 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
10041004
10051005 xgene_enet_napi_enable(pdata);
10061006 ret = xgene_enet_register_irq(ndev);
1007− if (ret)
1007+ if (ret) {
1008+ xgene_enet_napi_disable(pdata);
10081009 return ret;
1010+ }
10091011
10101012 if (ndev->phydev) {
10111013 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
570570
571571 ret = aq_mss_set_egress_sakey_record(hw, &key_rec, sa_idx);
572572
573+ memzero_explicit(&key_rec, sizeof(key_rec));
573574 return ret;
574575 }
575576
@@ -899,6 +900,7 @@ static int aq_update_rxsa(struct aq_nic_s *nic, const unsigned int sc_idx, · 323 unmodified lines
899900
900901 ret = aq_mss_set_ingress_sakey_record(hw, &sa_key_record, sa_idx);
901902
903+ memzero_explicit(&sa_key_record, sizeof(sa_key_record));
902904 return ret;
903905 }
904906
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
757757 u16 table_index)
758758 {
759759 u16 packed_record[18];
760+ int ret;
760761
761762 if (table_index >= NUMROWS_INGRESSSAKEYRECORD)
762763 return -EINVAL;
@@ -789,9 +790,12 @@ set_ingress_sakey_record(struct aq_hw_s *hw, · 26 unmodified lines
789790
790791 packed_record[16] = rec->key_len & 0x3;
791792
792− return set_raw_ingress_record(hw, packed_record, 18, 2,
793− ROWOFFSET_INGRESSSAKEYRECORD +
794− table_index);
793+ ret = set_raw_ingress_record(hw, packed_record, 18, 2,
794+ ROWOFFSET_INGRESSSAKEYRECORD +
795+ table_index);
796+
797+ memzero_explicit(packed_record, sizeof(packed_record));
798+ return ret;
795799 }
796800
797801 int 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
17391743 ret = set_raw_egress_record(hw, packed_record, 8, 2,
17401744 ROWOFFSET_EGRESSSAKEYRECORD + table_index);
17411745 if (unlikely(ret))
1742− return ret;
1746+ goto clear_key;
17431747 ret = set_raw_egress_record(hw, packed_record + 8, 8, 2,
17441748 ROWOFFSET_EGRESSSAKEYRECORD + table_index -
17451749 32);
1746− if (unlikely(ret))
1747− return ret;
17481750
1749− return 0;
1751+clear_key:
1752+ memzero_explicit(packed_record, sizeof(packed_record));
1753+ return ret;
17501754 }
17511755
17521756 int 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
7777 select BCM7XXX_PHY
7878 select MDIO_BCM_UNIMAC
7979 select DIMLIB
80− select BROADCOM_PHY if ARCH_BCM2835
80+ select BROADCOM_PHY if (ARCH_BCM2835 && PTP_1588_CLOCK_OPTIONAL)
8181 help
8282 This driver supports the built-in Ethernet MACs found in the
8383 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
99839983 return -ENODEV;
99849984 }
99859985
9986−int bnxt_cancel_reservations(struct bnxt *bp, bool fw_reset)
9986+static void bnxt_clear_reservations(struct bnxt *bp, bool fw_reset)
99879987 {
99889988 struct bnxt_hw_resc *hw_resc = &bp->hw_resc;
9989− int rc;
99909989
99919990 if (!BNXT_NEW_RM(bp))
9992− return 0; /* 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");
9991+ return; /* no resource reservations required */
99979992
99989993 hw_resc->resv_cp_rings = 0;
99999994 hw_resc->resv_stat_ctxs = 0;
@@ -10006,6 +10001,20 @@ int bnxt_cancel_reservations(struct bnxt *bp, bool fw_reset) · 6 unmodified lines
1000610001 bp->tx_nr_rings = 0;
1000710002 bp->rx_nr_rings = 0;
1000810003 }
10004+}
10005+
10006+int 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);
1000910018
1001010019 return rc;
1001110020 }
@@ -12894,8 +12903,8 @@ static int bnxt_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb, · 2882 unmodified lines
1289412903 rcu_read_lock();
1289512904 hlist_for_each_entry_rcu(fltr, head, hash) {
1289612905 if (bnxt_fltr_match(fltr, new_fltr)) {
12906+ rc = fltr->sw_id;
1289712907 rcu_read_unlock();
12898− rc = 0;
1289912908 goto err_free;
1290012909 }
1290112910 }
@@ -13913,7 +13922,9 @@ static pci_ers_result_t bnxt_io_slot_reset(struct pci_dev *pdev) · 1011 unmodified lines
1391313922 pci_ers_result_t result = PCI_ERS_RESULT_DISCONNECT;
1391413923 struct net_device *netdev = pci_get_drvdata(pdev);
1391513924 struct bnxt *bp = netdev_priv(netdev);
13916− int err = 0, off;
13925+ int retry = 0;
13926+ int err = 0;
13927+ int off;
1391713928
1391813929 netdev_info(bp->dev, "PCI Slot Reset\n");
1391913930
@@ -13941,11 +13952,36 @@ static pci_ers_result_t bnxt_io_slot_reset(struct pci_dev *pdev) · 21 unmodified lines
1394113952 pci_restore_state(pdev);
1394213953 pci_save_state(pdev);
1394313954
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+
1394413973 err = bnxt_hwrm_func_reset(bp);
1394513974 if (!err)
1394613975 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);
1394713981 }
1394813982
13983+reset_exit:
13984+ bnxt_clear_reservations(bp, true);
1394913985 rtnl_unlock();
1395013986
1395113987 return result;
drivers/net/ethernet/broadcom/bnxt/bnxt.h+1−0
@@ -1621,6 +1621,7 @@ struct bnxt_fw_health { · 1620 unmodified lines
16211621
16221622 #define BNXT_FW_RETRY 5
16231623 #define BNXT_FW_IF_RETRY 10
1624+#define BNXT_FW_SLOT_RESET_RETRY 4
16241625
16251626 enum board_idx {
16261627 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
162162 }
163163
164164 reset_coalesce:
165− if (netif_running(dev)) {
165+ if (test_bit(BNXT_STATE_OPEN, &bp->state)) {
166166 if (update_stats) {
167167 rc = bnxt_close_nic(bp, true, false);
168168 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
476476 memset(ctx->resp, 0, PAGE_SIZE);
477477
478478 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)) {
480481 netdev_dbg(bp->dev, "hwrm req_type 0x%x skipped, FW channel down\n",
481482 req_type);
482483 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
13011301 if (ret < 0) {
13021302 CH_ERR(adap, "failed to bind qsets, err %d\n", ret);
13031303 t3_intr_disable(adap);
1304+ quiesce_rx(adap);
13041305 free_irq_resources(adap);
13051306 err = ret;
13061307 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
858858 */
859859 err = t4vf_update_port_info(pi);
860860 if (err < 0)
861− return err;
861+ goto err_unwind;
862862
863863 /*
864864 * 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
487487 return err;
488488 }
489489
490+static 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+
490498 static struct platform_driver mac_driver = {
491499 .driver = {
492500 .name = KBUILD_MODNAME,
493501 .of_match_table = mac_match,
494502 },
495503 .probe = mac_probe,
504+ .remove = mac_remove,
496505 };
497506
498507 builtin_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
1298412984 static int hclge_get_dscp_prio(struct hnae3_handle *h, u8 dscp, u8 *tc_mode,
1298512985 u8 *priority)
1298612986 {
12987+ struct hclge_vport *vport = hclge_get_vport(h);
12988+
1298712989 if (dscp >= HNAE3_MAX_DSCP)
1298812990 return -EINVAL;
1298912991
1299012992 if (tc_mode)
12991− *tc_mode = h->kinfo.tc_map_mode;
12993+ *tc_mode = vport->nic.kinfo.tc_map_mode;
1299212994 if (priority)
12993− *priority = h->kinfo.dscp_prio[dscp] == HNAE3_PRIO_ID_INVALID ? 0 :
12994− h->kinfo.dscp_prio[dscp];
12995+ *priority = vport->nic.kinfo.dscp_prio[dscp] == HNAE3_PRIO_ID_INVALID ? 0 :
12996+ vport->nic.kinfo.dscp_prio[dscp];
1299512997
1299612998 return 0;
1299712999 }
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
17571757 kobject_uevent(kobj, KOBJ_ADD);
17581758 }
17591759
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));
17611762 if (rc) {
17621763 netdev_dbg(netdev, "failed to set number of tx queues rc=%d\n",
17631764 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
100100 #define IBMVETH_MAX_BUF_SIZE (1024 * 128)
101101 #define IBMVETH_MAX_TX_BUF_SIZE (1024 * 64)
102102 #define IBMVETH_MAX_QUEUES 16U
103+#define IBMVETH_DEFAULT_QUEUES 8U
103104
104105 static int pool_size[] = { 512, 1024 * 2, 1024 * 16, 1024 * 32, 1024 * 64 };
105106 static 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
24382438 list_for_each_entry(f, &adapter->vlan_filter_list, list) {
24392439 if (f->is_new_vlan) {
24402440 f->is_new_vlan = false;
2441+ if (!f->vlan.vid)
2442+ continue;
24412443 if (f->vlan.tpid == ETH_P_8021Q)
24422444 set_bit(f->vlan.vid,
24432445 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
958958 * associated to the queue to schedule NAPI handler
959959 */
960960 q_vector = ring->q_vector;
961− if (q_vector)
961+ if (q_vector && !(vsi->vf && ice_is_vf_disabled(vsi->vf)))
962962 ice_trigger_sw_intr(hw, q_vector);
963963
964964 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
22392239 return ice_vsi_stop_tx_rings(vsi, ICE_NO_RESET, 0, vsi->xdp_rings, vsi->num_xdp_txq);
22402240 }
22412241
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+ */
2248+bool 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+
22422267 /**
22432268 * ice_vsi_is_vlan_pruning_ena - check if VLAN pruning is enabled or not
22442269 * @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
129129 bool ice_is_feature_supported(struct ice_pf *pf, enum ice_feature f);
130130 void ice_clear_feature_support(struct ice_pf *pf, enum ice_feature f);
131131 void ice_init_feature_support(struct ice_pf *pf);
132+bool ice_vsi_is_rx_queue_active(struct ice_vsi *vsi);
132133 #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
576576 return -EINVAL;
577577 }
578578 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+
580583 dev_dbg(dev, "VF is already disabled, there is no need for resetting it, telling VM, all is fine %d\n",
581584 vf->vf_id);
582585 return 0;
drivers/net/ethernet/marvell/mv643xx_eth.c+1−0
@@ -2481,6 +2481,7 @@ out_free: · 2480 unmodified lines
24812481 for (i = 0; i < mp->rxq_count; i++)
24822482 rxq_deinit(mp->rxq + i);
24832483 out:
2484+ napi_disable(&mp->napi);
24842485 free_irq(dev->irq, dev);
24852486
24862487 return err;
drivers/net/ethernet/marvell/octeontx2/Kconfig+2−0
@@ -32,10 +32,12 @@ config OCTEONTX2_PF · 31 unmodified lines
3232 tristate "Marvell OcteonTX2 NIC Physical Function driver"
3333 select OCTEONTX2_MBOX
3434 select NET_DEVLINK
35+ depends on MACSEC || !MACSEC
3536 depends on (64BIT && COMPILE_TEST) || ARM64
3637 select DIMLIB
3738 depends on PCI
3839 depends on PTP_1588_CLOCK_OPTIONAL
40+ depends on MACSEC || !MACSEC
3941 help
4042 This driver supports Marvell's OcteonTX2 NIC physical function.
4143
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
898898 }
899899
900900 sq->head = 0;
901+ sq->cons_head = 0;
901902 sq->sqe_per_sqb = (pfvf->hw.sqb_size / sq->sqe_size) - 1;
902903 sq->num_sqbs = (qset->sqe_cnt + sq->sqe_per_sqb) / sq->sqe_per_sqb;
903904 /* 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
1515 #include <net/ip.h>
1616 #include <linux/bpf.h>
1717 #include <linux/bpf_trace.h>
18+#include <linux/bitfield.h>
1819
1920 #include "otx2_reg.h"
2021 #include "otx2_common.h"
@@ -1171,6 +1172,59 @@ int otx2_set_real_num_queues(struct net_device *netdev, · 1150 unmodified lines
11711172 }
11721173 EXPORT_SYMBOL(otx2_set_real_num_queues);
11731174
1175+static 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+
1187+static 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+
1200+static 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+
11741228 static irqreturn_t otx2_q_intr_handler(int irq, void *data)
11751229 {
11761230 struct otx2_nic *pf = data;
@@ -1204,46 +1258,67 @@ static irqreturn_t otx2_q_intr_handler(int irq, void *data) · 27 unmodified lines
12041258
12051259 /* SQ */
12061260 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+
12071269 ptr = otx2_get_regaddr(pf, NIX_LF_SQ_OP_INT);
12081270 val = otx2_atomic64_add((qidx << 44), ptr);
12091271 otx2_write64(pf, NIX_LF_SQ_OP_INT, (qidx << 44) |
12101272 (val & NIX_SQINT_BITS));
12111273
1212− if (!(val & (NIX_SQINT_BITS | BIT_ULL(42))))
1213− continue;
1214−
12151274 if (val & BIT_ULL(42)) {
12161275 netdev_err(pf->netdev, "SQ%lld: error reading NIX_LF_SQ_OP_INT, NIX_LF_ERR_INT 0x%llx\n",
12171276 qidx, otx2_read64(pf, NIX_LF_ERR_INT));
1218− } else {
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);
1277+ goto done;
12451278 }
12461279
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+
1297+chk_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+
1307+chk_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+
1316+done:
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+
12471322 schedule_work(&pf->reset_task);
12481323 }
12491324
drivers/net/ethernet/marvell/octeontx2/nic/otx2_struct.h+57−0
@@ -281,4 +281,61 @@ enum nix_sqint_e { · 280 unmodified lines
281281 BIT_ULL(NIX_SQINT_SEND_ERR) | \
282282 BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL))
283283
284+enum 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+
297+enum 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+
311+enum 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+
284341 #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
441441 struct otx2_cq_queue *cq, int budget)
442442 {
443443 int tx_pkts = 0, tx_bytes = 0, qidx;
444+ struct otx2_snd_queue *sq;
444445 struct nix_cqe_tx_s *cqe;
445446 int processed_cqe = 0;
446447
@@ -451,6 +452,9 @@ static int otx2_tx_napi_handler(struct otx2_nic *pfvf, · 4 unmodified lines
451452 return 0;
452453
453454 process_cqe:
455+ qidx = cq->cq_idx - pfvf->hw.rx_queues;
456+ sq = &pfvf->qset.sq[qidx];
457+
454458 while (likely(processed_cqe < budget) && cq->pend_cqe) {
455459 cqe = (struct nix_cqe_tx_s *)otx2_get_next_cqe(cq);
456460 if (unlikely(!cqe)) {
@@ -458,18 +462,20 @@ process_cqe: · 1 unmodified line
458462 return 0;
459463 break;
460464 }
465+
461466 if (cq->cq_type == CQ_XDP) {
462− qidx = cq->cq_idx - pfvf->hw.rx_queues;
463− otx2_xdp_snd_pkt_handler(pfvf, &pfvf->qset.sq[qidx],
464− cqe);
467+ otx2_xdp_snd_pkt_handler(pfvf, sq, cqe);
465468 } else {
466− otx2_snd_pkt_handler(pfvf, cq,
467− &pfvf->qset.sq[cq->cint_idx],
468− cqe, budget, &tx_pkts, &tx_bytes);
469+ otx2_snd_pkt_handler(pfvf, cq, sq, cqe, budget,
470+ &tx_pkts, &tx_bytes);
469471 }
472+
470473 cqe->hdr.cqe_type = NIX_XQE_TYPE_INVALID;
471474 processed_cqe++;
472475 cq->pend_cqe--;
476+
477+ sq->cons_head++;
478+ sq->cons_head &= (sq->sqe_cnt - 1);
473479 }
474480
475481 /* 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
10721078 {
10731079 struct netdev_queue *txq = netdev_get_tx_queue(netdev, qidx);
10741080 struct otx2_nic *pfvf = netdev_priv(netdev);
1075− int offset, num_segs, free_sqe;
1081+ int offset, num_segs, free_desc;
10761082 struct nix_sqe_hdr_s *sqe_hdr;
10771083
1078− /* Check if there is room for new SQE.
1079− * 'Num of SQBs freed to SQ's pool - SQ's Aura count'
1080− * will give free SQE count.
1084+ /* Check if there is enough room between producer
1085+ * and consumer index.
10811086 */
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;
10831090
1084− if (free_sqe < sq->sqe_thresh ||
1085− free_sqe < otx2_get_sqe_count(pfvf, skb))
1091+ if (free_desc < otx2_get_sqe_count(pfvf, skb))
10861092 return false;
10871093
10881094 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
7979 struct otx2_snd_queue {
8080 u8 aura_id;
8181 u16 head;
82+ u16 cons_head;
8283 u16 sqe_size;
8384 u32 sqe_cnt;
8485 u16 num_sqbs;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c+6−1
@@ -776,6 +776,7 @@ tx_done: · 775 unmodified lines
776776 int prestera_rxtx_switch_init(struct prestera_switch *sw)
777777 {
778778 struct prestera_rxtx *rxtx;
779+ int err;
779780
780781 rxtx = kzalloc(sizeof(*rxtx), GFP_KERNEL);
781782 if (!rxtx)
@@ -783,7 +784,11 @@ int prestera_rxtx_switch_init(struct prestera_switch *sw) · 1 unmodified line
783784
784785 sw->rxtx = rxtx;
785786
786− return prestera_sdma_switch_init(sw);
787+ err = prestera_sdma_switch_init(sw);
788+ if (err)
789+ kfree(rxtx);
790+
791+ return err;
787792 }
788793
789794 void 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
10261026 return 0;
10271027
10281028 err_free_irq:
1029+ napi_disable(&priv->rx_napi);
1030+ napi_disable(&priv->tx_napi);
10291031 free_irq(ndev->irq, ndev);
10301032 err_free_skbs:
10311033 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
17701770 struct mlx5_cmd *cmd = &dev->cmd;
17711771 int i;
17721772
1773− for (i = 0; i < cmd->max_reg_cmds; i++)
1774− while (down_trylock(&cmd->sem))
1773+ for (i = 0; i < cmd->max_reg_cmds; i++) {
1774+ while (down_trylock(&cmd->sem)) {
17751775 mlx5_cmd_trigger_completions(dev);
1776+ cond_resched();
1777+ }
1778+ }
17761779
1777− while (down_trylock(&cmd->pages_sem))
1780+ while (down_trylock(&cmd->pages_sem)) {
17781781 mlx5_cmd_trigger_completions(dev);
1782+ cond_resched();
1783+ }
17791784
17801785 /* Unlock cmdif */
17811786 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
164164 return err;
165165 }
166166
167+static int
168+mlx5_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+
167197 static int mlx5_esw_bridge_switchdev_port_event(struct notifier_block *nb,
168198 unsigned long event, void *ptr)
169199 {
@@ -171,6 +201,7 @@ static int mlx5_esw_bridge_switchdev_port_event(struct notifier_block *nb, · 1 unmodified line
171201
172202 switch (event) {
173203 case NETDEV_PRECHANGEUPPER:
204+ err = mlx5_esw_bridge_changeupper_validate_netdev(ptr);
174205 break;
175206
176207 case NETDEV_CHANGEUPPER:
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.c+32−60
@@ -6,70 +6,42 @@ · 5 unmodified lines
66 #include "en/tc_priv.h"
77 #include "mlx5_core.h"
88
9−/* Must be aligned with enum flow_action_id. */
109 static struct mlx5e_tc_act *tc_acts_fdb[NUM_FLOW_ACTIONS] = {
11− &mlx5e_tc_act_accept,
12− &mlx5e_tc_act_drop,
13− &mlx5e_tc_act_trap,
14− &mlx5e_tc_act_goto,
15− &mlx5e_tc_act_mirred,
16− &mlx5e_tc_act_mirred,
17− &mlx5e_tc_act_redirect_ingress,
18− NULL, /* FLOW_ACTION_MIRRED_INGRESS, */
19− &mlx5e_tc_act_vlan,
20− &mlx5e_tc_act_vlan,
21− &mlx5e_tc_act_vlan_mangle,
22− &mlx5e_tc_act_tun_encap,
23− &mlx5e_tc_act_tun_decap,
24− &mlx5e_tc_act_pedit,
25− &mlx5e_tc_act_pedit,
26− &mlx5e_tc_act_csum,
27− NULL, /* FLOW_ACTION_MARK, */
28− &mlx5e_tc_act_ptype,
29− NULL, /* FLOW_ACTION_PRIORITY, */
30− NULL, /* FLOW_ACTION_WAKE, */
31− NULL, /* FLOW_ACTION_QUEUE, */
32− &mlx5e_tc_act_sample,
33− &mlx5e_tc_act_police,
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,
10+ [FLOW_ACTION_ACCEPT] = &mlx5e_tc_act_accept,
11+ [FLOW_ACTION_DROP] = &mlx5e_tc_act_drop,
12+ [FLOW_ACTION_TRAP] = &mlx5e_tc_act_trap,
13+ [FLOW_ACTION_GOTO] = &mlx5e_tc_act_goto,
14+ [FLOW_ACTION_REDIRECT] = &mlx5e_tc_act_mirred,
15+ [FLOW_ACTION_MIRRED] = &mlx5e_tc_act_mirred,
16+ [FLOW_ACTION_REDIRECT_INGRESS] = &mlx5e_tc_act_redirect_ingress,
17+ [FLOW_ACTION_VLAN_PUSH] = &mlx5e_tc_act_vlan,
18+ [FLOW_ACTION_VLAN_POP] = &mlx5e_tc_act_vlan,
19+ [FLOW_ACTION_VLAN_MANGLE] = &mlx5e_tc_act_vlan_mangle,
20+ [FLOW_ACTION_TUNNEL_ENCAP] = &mlx5e_tc_act_tun_encap,
21+ [FLOW_ACTION_TUNNEL_DECAP] = &mlx5e_tc_act_tun_decap,
22+ [FLOW_ACTION_MANGLE] = &mlx5e_tc_act_pedit,
23+ [FLOW_ACTION_ADD] = &mlx5e_tc_act_pedit,
24+ [FLOW_ACTION_CSUM] = &mlx5e_tc_act_csum,
25+ [FLOW_ACTION_PTYPE] = &mlx5e_tc_act_ptype,
26+ [FLOW_ACTION_SAMPLE] = &mlx5e_tc_act_sample,
27+ [FLOW_ACTION_POLICE] = &mlx5e_tc_act_police,
28+ [FLOW_ACTION_CT] = &mlx5e_tc_act_ct,
29+ [FLOW_ACTION_MPLS_PUSH] = &mlx5e_tc_act_mpls_push,
30+ [FLOW_ACTION_MPLS_POP] = &mlx5e_tc_act_mpls_pop,
31+ [FLOW_ACTION_VLAN_PUSH_ETH] = &mlx5e_tc_act_vlan,
32+ [FLOW_ACTION_VLAN_POP_ETH] = &mlx5e_tc_act_vlan,
4533 };
4634
47−/* Must be aligned with enum flow_action_id. */
4835 static struct mlx5e_tc_act *tc_acts_nic[NUM_FLOW_ACTIONS] = {
49− &mlx5e_tc_act_accept,
50− &mlx5e_tc_act_drop,
51− NULL, /* FLOW_ACTION_TRAP, */
52− &mlx5e_tc_act_goto,
53− &mlx5e_tc_act_mirred_nic,
54− NULL, /* FLOW_ACTION_MIRRED, */
55− NULL, /* FLOW_ACTION_REDIRECT_INGRESS, */
56− NULL, /* FLOW_ACTION_MIRRED_INGRESS, */
57− NULL, /* FLOW_ACTION_VLAN_PUSH, */
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,
36+ [FLOW_ACTION_ACCEPT] = &mlx5e_tc_act_accept,
37+ [FLOW_ACTION_DROP] = &mlx5e_tc_act_drop,
38+ [FLOW_ACTION_GOTO] = &mlx5e_tc_act_goto,
39+ [FLOW_ACTION_REDIRECT] = &mlx5e_tc_act_mirred_nic,
40+ [FLOW_ACTION_MANGLE] = &mlx5e_tc_act_pedit,
41+ [FLOW_ACTION_ADD] = &mlx5e_tc_act_pedit,
42+ [FLOW_ACTION_CSUM] = &mlx5e_tc_act_csum,
43+ [FLOW_ACTION_MARK] = &mlx5e_tc_act_mark,
44+ [FLOW_ACTION_CT] = &mlx5e_tc_act_ct,
7345 };
7446
7547 /**
drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h+23−1
@@ -11,6 +11,27 @@ · 10 unmodified lines
1111
1212 #define INL_HDR_START_SZ (sizeof(((struct mlx5_wqe_eth_seg *)NULL)->inline_hdr.start))
1313
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+
1435 #define MLX5E_RX_ERR_CQE(cqe) (get_cqe_opcode(cqe) != MLX5_CQE_RESP_SEND)
1536
1637 static inline
@@ -424,6 +445,8 @@ mlx5e_set_eseg_swp(struct sk_buff *skb, struct mlx5_wqe_eth_seg *eseg, · 407 unmodified lines
424445
425446 static inline u16 mlx5e_stop_room_for_wqe(struct mlx5_core_dev *mdev, u16 wqe_size)
426447 {
448+ WARN_ON_ONCE(PAGE_SIZE / MLX5_SEND_WQE_BB < mlx5e_get_max_sq_wqebbs(mdev));
449+
427450 /* A WQE must not cross the page boundary, hence two conditions:
428451 * 1. Its size must not exceed the page size.
429452 * 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
436459 "wqe_size %u is greater than max SQ WQEBBs %u",
437460 wqe_size, mlx5e_get_max_sq_wqebbs(mdev));
438461
439−
440462 return MLX5E_STOP_ROOM(wqe_size);
441463 }
442464
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
117117 xdpi.page.rq = rq;
118118
119119 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);
121121
122122 if (unlikely(xdp_frame_has_frags(xdpf))) {
123123 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
131131 skb_frag_off(frag);
132132 len = skb_frag_size(frag);
133133 dma_sync_single_for_device(sq->pdev, addr, len,
134− DMA_TO_DEVICE);
134+ DMA_BIDIRECTIONAL);
135135 }
136136 }
137137
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
56945694 mlx5e_fs_set_state_destroy(priv->fs,
56955695 !test_bit(MLX5E_STATE_DESTROYING, &priv->state));
56965696
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+
56975704 /* max number of channels may have changed */
56985705 max_nch = mlx5e_calc_max_nch(priv->mdev, priv->netdev, profile);
56995706 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
266266
267267 addr = page_pool_get_dma_addr(au->page);
268268 /* 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);
270270 return true;
271271 }
272272
@@ -282,8 +282,7 @@ static inline int mlx5e_page_alloc_pool(struct mlx5e_rq *rq, union mlx5e_alloc_u · 9 unmodified lines
282282 return -ENOMEM;
283283
284284 /* Non-XSK always uses PAGE_SIZE. */
285− addr = dma_map_page_attrs(rq->pdev, au->page, 0, PAGE_SIZE,
286− rq->buff.map_dir, DMA_ATTR_SKIP_CPU_SYNC);
285+ addr = dma_map_page(rq->pdev, au->page, 0, PAGE_SIZE, rq->buff.map_dir);
287286 if (unlikely(dma_mapping_error(rq->pdev, addr))) {
288287 page_pool_recycle_direct(rq->page_pool, au->page);
289288 au->page = NULL;
@@ -427,14 +426,15 @@ mlx5e_add_skb_frag(struct mlx5e_rq *rq, struct sk_buff *skb, · 137 unmodified lines
427426 {
428427 dma_addr_t addr = page_pool_get_dma_addr(au->page);
429428
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);
431431 page_ref_inc(au->page);
432432 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
433433 au->page, frag_offset, len, truesize);
434434 }
435435
436436 static inline void
437−mlx5e_copy_skb_header(struct device *pdev, struct sk_buff *skb,
437+mlx5e_copy_skb_header(struct mlx5e_rq *rq, struct sk_buff *skb,
438438 struct page *page, dma_addr_t addr,
439439 int offset_from, int dma_offset, u32 headlen)
440440 {
@@ -442,7 +442,8 @@ mlx5e_copy_skb_header(struct device *pdev, struct sk_buff *skb, · 1 unmodified line
442442 /* Aligning len to sizeof(long) optimizes memcpy performance */
443443 unsigned int len = ALIGN(headlen, sizeof(long));
444444
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);
446447 skb_copy_to_linear_data(skb, from, len);
447448 }
448449
@@ -1538,7 +1539,7 @@ mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi, · 1089 unmodified lines
15381539
15391540 addr = page_pool_get_dma_addr(au->page);
15401541 dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset,
1541− frag_size, DMA_FROM_DEVICE);
1542+ frag_size, rq->buff.map_dir);
15421543 net_prefetch(data);
15431544
15441545 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
15871588
15881589 addr = page_pool_get_dma_addr(au->page);
15891590 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);
15911592 net_prefetchw(va); /* xdp_frame data area */
15921593 net_prefetch(va + rx_headroom);
15931594
@@ -1608,7 +1609,7 @@ mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi · 14 unmodified lines
16081609
16091610 addr = page_pool_get_dma_addr(au->page);
16101611 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);
16121613
16131614 if (!xdp_buff_has_frags(&xdp)) {
16141615 /* 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
19051906 mlx5e_fill_skb_data(skb, rq, au, byte_cnt, frag_offset);
19061907 /* copy header */
19071908 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,
19091910 head_offset, head_offset, headlen);
19101911 /* skb linear part was allocated with headlen and aligned to long */
19111912 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
19391940
19401941 addr = page_pool_get_dma_addr(au->page);
19411942 dma_sync_single_range_for_cpu(rq->pdev, addr, head_offset,
1942− frag_size, DMA_FROM_DEVICE);
1943+ frag_size, rq->buff.map_dir);
19431944 net_prefetch(data);
19441945
19451946 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
19871988
19881989 if (likely(frag_size <= BIT(MLX5E_SHAMPO_LOG_MAX_HEADER_ENTRY_SIZE))) {
19891990 /* 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);
19911992 prefetchw(hdr);
19921993 prefetch(data);
19931994 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
20092010 }
20102011
20112012 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,
20132014 head_offset + rx_headroom,
20142015 rx_headroom, head_size);
20152016 /* 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
36333633 attr2->action = 0;
36343634 attr2->flags = 0;
36353635 attr2->parse_attr = parse_attr;
3636− attr2->esw_attr->out_count = 0;
3637− attr2->esw_attr->split_count = 0;
36383636 attr2->dest_chain = 0;
36393637 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+
36403644 return attr2;
36413645 }
36423646
@@ -4758,12 +4762,6 @@ int mlx5e_policer_validate(const struct flow_action *action, · 1115 unmodified lines
47584762 return -EOPNOTSUPP;
47594763 }
47604764
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−
47674765 return 0;
47684766 }
47694767
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
305305 u16 ds_cnt_inl = 0;
306306 u16 ds_cnt_ids = 0;
307307
308+ /* Sync the calculation with MLX5E_MAX_TX_WQEBBS. */
309+
308310 if (attr->insz)
309311 ds_cnt_ids = DIV_ROUND_UP(sizeof(struct mlx5_wqe_inline_seg) + attr->insz,
310312 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
317319 inl += VLAN_HLEN;
318320
319321 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);
320325 ds_cnt += ds_cnt_inl;
321326 }
322327
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
13871387 esw->mode == MLX5_ESWITCH_LEGACY ? "LEGACY" : "OFFLOADS",
13881388 esw->esw_funcs.num_vfs, esw->enabled_vports);
13891389
1390− esw->fdb_table.flags &= ~MLX5_ESW_FDB_CREATED;
1391− if (esw->mode == MLX5_ESWITCH_OFFLOADS)
1392− esw_offloads_disable(esw);
1393− else if (esw->mode == MLX5_ESWITCH_LEGACY)
1394− esw_legacy_disable(esw);
1395− mlx5_esw_acls_ns_cleanup(esw);
1390+ if (esw->fdb_table.flags & MLX5_ESW_FDB_CREATED) {
1391+ esw->fdb_table.flags &= ~MLX5_ESW_FDB_CREATED;
1392+ if (esw->mode == MLX5_ESWITCH_OFFLOADS)
1393+ esw_offloads_disable(esw);
1394+ else if (esw->mode == MLX5_ESWITCH_LEGACY)
1395+ esw_legacy_disable(esw);
1396+ mlx5_esw_acls_ns_cleanup(esw);
1397+ }
13961398
13971399 if (esw->mode == MLX5_ESWITCH_OFFLOADS)
13981400 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
23102310 static int esw_offloads_start(struct mlx5_eswitch *esw,
23112311 struct netlink_ext_ack *extack)
23122312 {
2313− int err, err1;
2313+ int err;
23142314
23152315 esw->mode = MLX5_ESWITCH_OFFLOADS;
23162316 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
23182318 NL_SET_ERR_MSG_MOD(extack,
23192319 "Failed setting eswitch to offloads");
23202320 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− }
23262321 mlx5_rescan_drivers(esw->dev);
23272322 }
23282323 if (esw->offloads.inline_mode == MLX5_INLINE_MODE_NONE) {
@@ -3389,19 +3384,12 @@ err_metadata: · 1060 unmodified lines
33893384 static int esw_offloads_stop(struct mlx5_eswitch *esw,
33903385 struct netlink_ext_ack *extack)
33913386 {
3392− int err, err1;
3387+ int err;
33933388
33943389 esw->mode = MLX5_ESWITCH_LEGACY;
33953390 err = mlx5_eswitch_enable_locked(esw, MLX5_ESWITCH_IGNORE_NUM_VFS);
3396− if (err) {
3391+ if (err)
33973392 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− }
34053393
34063394 return err;
34073395 }
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
3030 sizeof(dest->vport.num), hash);
3131 hash = jhash((const void *)&dest->vport.vhca_id,
3232 sizeof(dest->vport.num), hash);
33− if (dest->vport.pkt_reformat)
34− hash = jhash(dest->vport.pkt_reformat,
35− sizeof(*dest->vport.pkt_reformat),
33+ if (flow_act->pkt_reformat)
34+ hash = jhash(flow_act->pkt_reformat,
35+ sizeof(*flow_act->pkt_reformat),
3636 hash);
3737 return hash;
3838 }
@@ -53,9 +53,11 @@ mlx5_eswitch_termtbl_cmp(struct mlx5_flow_act *flow_act1, · 14 unmodified lines
5353 if (ret)
5454 return ret;
5555
56− return dest1->vport.pkt_reformat && dest2->vport.pkt_reformat ?
57− memcmp(dest1->vport.pkt_reformat, dest2->vport.pkt_reformat,
58− sizeof(*dest1->vport.pkt_reformat)) : 0;
56+ if (flow_act1->pkt_reformat && flow_act2->pkt_reformat)
57+ return memcmp(flow_act1->pkt_reformat, flow_act2->pkt_reformat,
58+ sizeof(*flow_act1->pkt_reformat));
59+
60+ return !(flow_act1->pkt_reformat == flow_act2->pkt_reformat);
5961 }
6062
6163 static 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
152152 mlx5_unload_one(dev);
153153 if (mlx5_health_wait_pci_up(dev))
154154 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);
156157 devlink_remote_reload_actions_performed(priv_to_devlink(dev), 0,
157158 BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT) |
158159 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
71287128 if (ret) {
71297129 DBG_PRINT(ERR_DBG, "%s: Out of memory in Open\n",
71307130 dev->name);
7131− s2io_reset(sp);
7132− free_rx_buffers(sp);
7133− return -ENOMEM;
7131+ ret = -ENOMEM;
7132+ goto err_fill_buff;
71347133 }
71357134 DBG_PRINT(INFO_DBG, "Buf in ring:%d is %d:\n", i,
71367135 ring->rx_bufs_left);
@@ -7168,18 +7167,16 @@ static int s2io_card_up(struct s2io_nic *sp) · 31 unmodified lines
71687167 /* Enable Rx Traffic and interrupts on the NIC */
71697168 if (start_nic(sp)) {
71707169 DBG_PRINT(ERR_DBG, "%s: Starting NIC failed\n", dev->name);
7171− s2io_reset(sp);
7172− free_rx_buffers(sp);
7173− return -ENODEV;
7170+ ret = -ENODEV;
7171+ goto err_out;
71747172 }
71757173
71767174 /* Add interrupt service routine */
71777175 if (s2io_add_isr(sp) != 0) {
71787176 if (sp->config.intr_type == MSI_X)
71797177 s2io_rem_isr(sp);
7180− s2io_reset(sp);
7181− free_rx_buffers(sp);
7182− return -ENODEV;
7178+ ret = -ENODEV;
7179+ goto err_out;
71837180 }
71847181
71857182 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
71997196 }
72007197
72017198 return 0;
7199+
7200+err_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+ }
7209+err_fill_buff:
7210+ s2io_reset(sp);
7211+ free_rx_buffers(sp);
7212+ return ret;
72027213 }
72037214
72047215 /**
drivers/net/ethernet/ni/nixge.c+1−0
@@ -900,6 +900,7 @@ static int nixge_open(struct net_device *ndev) · 899 unmodified lines
900900 err_rx_irq:
901901 free_irq(priv->tx_irq, ndev);
902902 err_tx_irq:
903+ napi_disable(&priv->napi);
903904 phy_stop(phy);
904905 phy_disconnect(phy);
905906 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
629629 {
630630 plat->rx_queues_to_use = 8;
631631 plat->tx_queues_to_use = 8;
632− plat->clk_ptp_rate = 200000000;
633632 plat->use_phy_wol = 1;
634633
635634 plat->safety_feat_cfg->tsoee = 1;
@@ -654,6 +653,8 @@ static int ehl_sgmii_data(struct pci_dev *pdev, · 18 unmodified lines
654653 plat->serdes_powerup = intel_serdes_powerup;
655654 plat->serdes_powerdown = intel_serdes_powerdown;
656655
656+ plat->clk_ptp_rate = 204800000;
657+
657658 return ehl_common_data(pdev, plat);
658659 }
659660
@@ -667,6 +668,8 @@ static int ehl_rgmii_data(struct pci_dev *pdev, · 7 unmodified lines
667668 plat->bus_id = 1;
668669 plat->phy_interface = PHY_INTERFACE_MODE_RGMII;
669670
671+ plat->clk_ptp_rate = 204800000;
672+
670673 return ehl_common_data(pdev, plat);
671674 }
672675
@@ -683,6 +686,8 @@ static int ehl_pse0_common_data(struct pci_dev *pdev, · 10 unmodified lines
683686 plat->bus_id = 2;
684687 plat->addr64 = 32;
685688
689+ plat->clk_ptp_rate = 200000000;
690+
686691 intel_mgbe_pse_crossts_adj(intel_priv, EHL_PSE_ART_MHZ);
687692
688693 return ehl_common_data(pdev, plat);
@@ -722,6 +727,8 @@ static int ehl_pse1_common_data(struct pci_dev *pdev, · 33 unmodified lines
722727 plat->bus_id = 3;
723728 plat->addr64 = 32;
724729
730+ plat->clk_ptp_rate = 200000000;
731+
725732 intel_mgbe_pse_crossts_adj(intel_priv, EHL_PSE_ART_MHZ);
726733
727734 return ehl_common_data(pdev, plat);
@@ -757,7 +764,7 @@ static int tgl_common_data(struct pci_dev *pdev, · 29 unmodified lines
757764 {
758765 plat->rx_queues_to_use = 6;
759766 plat->tx_queues_to_use = 4;
760− plat->clk_ptp_rate = 200000000;
767+ plat->clk_ptp_rate = 204800000;
761768 plat->speed_mode_2500 = intel_speed_mode_2500;
762769
763770 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
7575 plat->mdio_bus_data = devm_kzalloc(&pdev->dev,
7676 sizeof(*plat->mdio_bus_data),
7777 GFP_KERNEL);
78− if (!plat->mdio_bus_data)
79− return -ENOMEM;
78+ if (!plat->mdio_bus_data) {
79+ ret = -ENOMEM;
80+ goto err_put_node;
81+ }
8082 plat->mdio_bus_data->needs_reset = true;
8183 }
8284
8385 plat->dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*plat->dma_cfg), GFP_KERNEL);
84− if (!plat->dma_cfg)
85− return -ENOMEM;
86+ if (!plat->dma_cfg) {
87+ ret = -ENOMEM;
88+ goto err_put_node;
89+ }
8690
8791 /* Enable pci device */
8892 ret = pci_enable_device(pdev);
8993 if (ret) {
9094 dev_err(&pdev->dev, "%s: ERROR: failed to enable device\n", __func__);
91− return ret;
95+ goto err_put_node;
9296 }
9397
9498 /* 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
97101 continue;
98102 ret = pcim_iomap_regions(pdev, BIT(0), pci_name(pdev));
99103 if (ret)
100− return ret;
104+ goto err_disable_device;
101105 break;
102106 }
103107
@@ -108,7 +112,8 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id · 4 unmodified lines
108112 phy_mode = device_get_phy_mode(&pdev->dev);
109113 if (phy_mode < 0) {
110114 dev_err(&pdev->dev, "phy_mode not found\n");
111− return phy_mode;
115+ ret = phy_mode;
116+ goto err_disable_device;
112117 }
113118
114119 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
125130 if (res.irq < 0) {
126131 dev_err(&pdev->dev, "IRQ macirq not found\n");
127132 ret = -ENODEV;
133+ goto err_disable_msi;
128134 }
129135
130136 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
137143 if (res.lpi_irq < 0) {
138144 dev_err(&pdev->dev, "IRQ eth_lpi not found\n");
139145 ret = -ENODEV;
146+ goto err_disable_msi;
140147 }
141148
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+
155+err_disable_msi:
156+ pci_disable_msi(pdev);
157+err_disable_device:
158+ pci_disable_device(pdev);
159+err_put_node:
160+ of_node_put(plat->mdio_node);
161+ return ret;
143162 }
144163
145164 static void loongson_dwmac_remove(struct pci_dev *pdev)
146165 {
166+ struct net_device *ndev = dev_get_drvdata(&pdev->dev);
167+ struct stmmac_priv *priv = netdev_priv(ndev);
147168 int i;
148169
170+ of_node_put(priv->plat->mdio_node);
149171 stmmac_dvr_remove(&pdev->dev);
150172
151173 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
155177 break;
156178 }
157179
180+ pci_disable_msi(pdev);
158181 pci_disable_device(pdev);
159182 }
160183
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
272272 if (ret)
273273 return ret;
274274
275− devm_add_action_or_reset(dwmac->dev,
276− (void(*)(void *))clk_disable_unprepare,
277− dwmac->rgmii_tx_clk);
278−
279− return 0;
275+ return devm_add_action_or_reset(dwmac->dev,
276+ (void(*)(void *))clk_disable_unprepare,
277+ clk);
280278 }
281279
282280 static 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
287287 if (ret) {
288288 dev_err(&pdev->dev, "Failed to register net device \"%s\"!\n",
289289 ndev->name);
290− free_netdev(ndev);
291290 *r_ndev = NULL;
292291 return ret;
293292 }
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
28232823 if (ret < 0)
28242824 return ret;
28252825
2826− am65_cpsw_nuss_phylink_cleanup(common);
28272826 am65_cpsw_unregister_devlink(common);
28282827 am65_cpsw_unregister_notifiers(common);
28292828
@@ -2831,6 +2830,7 @@ static int am65_cpsw_nuss_remove(struct platform_device *pdev) · 1 unmodified line
28312830 * dma_deconfigure(dev) before devres_release_all(dev)
28322831 */
28332832 am65_cpsw_nuss_cleanup_ndev(common);
2833+ am65_cpsw_nuss_phylink_cleanup(common);
28342834
28352835 of_platform_device_destroy(common->mdio_dev, NULL);
28362836
drivers/net/ethernet/ti/cpsw.c+2−0
@@ -854,6 +854,8 @@ static int cpsw_ndo_open(struct net_device *ndev) · 853 unmodified lines
854854
855855 err_cleanup:
856856 if (!cpsw->usage_count) {
857+ napi_disable(&cpsw->napi_rx);
858+ napi_disable(&cpsw->napi_tx);
857859 cpdma_ctlr_stop(cpsw->dma);
858860 cpsw_destroy_xdp_rxqs(cpsw);
859861 }
drivers/net/ethernet/tundra/tsi108_eth.c+4−1
@@ -1290,12 +1290,15 @@ static int tsi108_open(struct net_device *dev) · 1289 unmodified lines
12901290
12911291 data->rxring = dma_alloc_coherent(&data->pdev->dev, rxring_size,
12921292 &data->rxdma, GFP_KERNEL);
1293− if (!data->rxring)
1293+ if (!data->rxring) {
1294+ free_irq(data->irq_num, dev);
12941295 return -ENOMEM;
1296+ }
12951297
12961298 data->txring = dma_alloc_coherent(&data->pdev->dev, txring_size,
12971299 &data->txdma, GFP_KERNEL);
12981300 if (!data->txring) {
1301+ free_irq(data->irq_num, dev);
12991302 dma_free_coherent(&data->pdev->dev, rxring_size, data->rxring,
13001303 data->rxdma);
13011304 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
533533 if (!net_eq(dev_net(dev), &init_net))
534534 return NOTIFY_DONE;
535535
536− if (!dev_is_ethdev(dev))
536+ if (!dev_is_ethdev(dev) && !bpq_get_ax25_dev(dev))
537537 return NOTIFY_DONE;
538538
539539 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
14131413 return NULL;
14141414 }
14151415
1416−static struct macsec_rx_sc *create_rx_sc(struct net_device *dev, sci_t sci)
1416+static struct macsec_rx_sc *create_rx_sc(struct net_device *dev, sci_t sci,
1417+ bool active)
14171418 {
14181419 struct macsec_rx_sc *rx_sc;
14191420 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
14371438 }
14381439
14391440 rx_sc->sci = sci;
1440− rx_sc->active = true;
1441+ rx_sc->active = active;
14411442 refcount_set(&rx_sc->refcnt, 1);
14421443
14431444 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
18381839 secy->key_len);
18391840
18401841 err = macsec_offload(ops->mdo_add_rxsa, &ctx);
1842+ memzero_explicit(ctx.sa.key, secy->key_len);
18411843 if (err)
18421844 goto cleanup;
18431845 }
@@ -1876,7 +1878,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) · 32 unmodified lines
18761878 struct macsec_rx_sc *rx_sc;
18771879 struct nlattr *tb_rxsc[MACSEC_RXSC_ATTR_MAX + 1];
18781880 struct macsec_secy *secy;
1879− bool was_active;
1881+ bool active = true;
18801882 int ret;
18811883
18821884 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
18981900 secy = &macsec_priv(dev)->secy;
18991901 sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]);
19001902
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);
19021907 if (IS_ERR(rx_sc)) {
19031908 rtnl_unlock();
19041909 return PTR_ERR(rx_sc);
19051910 }
19061911
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−
19111912 if (macsec_is_offloaded(netdev_priv(dev))) {
19121913 const struct macsec_ops *ops;
19131914 struct macsec_context ctx;
@@ -1931,7 +1932,8 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) · 17 unmodified lines
19311932 return 0;
19321933
19331934 cleanup:
1934− rx_sc->active = was_active;
1935+ del_rx_sc(secy, sci);
1936+ free_rx_sc(rx_sc);
19351937 rtnl_unlock();
19361938 return ret;
19371939 }
@@ -2080,6 +2082,7 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info) · 142 unmodified lines
20802082 secy->key_len);
20812083
20822084 err = macsec_offload(ops->mdo_add_txsa, &ctx);
2085+ memzero_explicit(ctx.sa.key, secy->key_len);
20832086 if (err)
20842087 goto cleanup;
20852088 }
@@ -2570,7 +2573,7 @@ static bool macsec_is_configured(struct macsec_dev *macsec) · 484 unmodified lines
25702573 struct macsec_tx_sc *tx_sc = &secy->tx_sc;
25712574 int i;
25722575
2573− if (secy->n_rx_sc > 0)
2576+ if (secy->rx_sc)
25742577 return true;
25752578
25762579 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
26542657 if (ret)
26552658 goto rollback;
26562659
2657− /* Force features update, since they are different for SW MACSec and
2658− * HW offloading cases.
2659− */
2660− netdev_update_features(dev);
2661−
26622660 rtnl_unlock();
26632661 return 0;
26642662
@@ -3432,16 +3430,9 @@ static netdev_tx_t macsec_start_xmit(struct sk_buff *skb, · 767 unmodified lines
34323430 return ret;
34333431 }
34343432
3435−#define SW_MACSEC_FEATURES \
3433+#define MACSEC_FEATURES \
34363434 (NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST)
34373435
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−
34453436 static int macsec_dev_init(struct net_device *dev)
34463437 {
34473438 struct macsec_dev *macsec = macsec_priv(dev);
@@ -3458,12 +3449,8 @@ static int macsec_dev_init(struct net_device *dev) · 10 unmodified lines
34583449 return err;
34593450 }
34603451
3461− if (macsec_is_offloaded(macsec)) {
3462− dev->features = REAL_DEV_FEATURES(real_dev);
3463− } else {
3464− dev->features = real_dev->features & SW_MACSEC_FEATURES;
3465− dev->features |= NETIF_F_LLTX | NETIF_F_GSO_SOFTWARE;
3466− }
3452+ dev->features = real_dev->features & MACSEC_FEATURES;
3453+ dev->features |= NETIF_F_LLTX | NETIF_F_GSO_SOFTWARE;
34673454
34683455 dev->needed_headroom = real_dev->needed_headroom +
34693456 MACSEC_NEEDED_HEADROOM;
@@ -3495,10 +3482,7 @@ static netdev_features_t macsec_fix_features(struct net_device *dev, · 25 unmodified lines
34953482 struct macsec_dev *macsec = macsec_priv(dev);
34963483 struct net_device *real_dev = macsec->real_dev;
34973484
3498− if (macsec_is_offloaded(macsec))
3499− return REAL_DEV_FEATURES(real_dev);
3500−
3501− features &= (real_dev->features & SW_MACSEC_FEATURES) |
3485+ features &= (real_dev->features & MACSEC_FEATURES) |
35023486 NETIF_F_GSO_SOFTWARE | NETIF_F_SOFT_FEATURES;
35033487 features |= NETIF_F_LLTX;
35043488
drivers/net/macvlan.c+3−1
@@ -1533,8 +1533,10 @@ destroy_macvlan_port: · 1532 unmodified lines
15331533 /* the macvlan port may be freed by macvlan_uninit when fail to register.
15341534 * so we destroy the macvlan port only when it's valid.
15351535 */
1536− if (create && macvlan_port_get_rtnl(lowerdev))
1536+ if (create && macvlan_port_get_rtnl(lowerdev)) {
1537+ macvlan_flush_sources(port, vlan);
15371538 macvlan_port_destroy(port->dev);
1539+ }
15381540 return err;
15391541 }
15401542 EXPORT_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
632632
633633 list_del(&flow->list);
634634 clear_bit(flow->index, bitmap);
635+ memzero_explicit(flow->key, sizeof(flow->key));
635636 kfree(flow);
636637 }
637638
drivers/net/tun.c+13−5
@@ -1967,17 +1967,25 @@ drop: · 1966 unmodified lines
19671967 skb_headlen(skb));
19681968
19691969 if (unlikely(headlen > skb_headlen(skb))) {
1970+ WARN_ON_ONCE(1);
1971+ err = -ENOMEM;
19701972 dev_core_stats_rx_dropped_inc(tun->dev);
1973+napi_busy:
19711974 napi_free_frags(&tfile->napi);
19721975 rcu_read_unlock();
19731976 mutex_unlock(&tfile->napi_mutex);
1974− WARN_ON(1);
1975− return -ENOMEM;
1977+ return err;
19761978 }
19771979
1978− local_bh_disable();
1979− napi_gro_frags(&tfile->napi);
1980− local_bh_enable();
1980+ if (likely(napi_schedule_prep(&tfile->napi))) {
1981+ local_bh_disable();
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+ }
19811989 mutex_unlock(&tfile->napi_mutex);
19821990 } else if (tfile->napi_enabled) {
19831991 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
325325
326326 err = lapb_register(dev, &lapbeth_callbacks);
327327 if (err != LAPB_OK) {
328+ napi_disable(&lapbeth->napi);
328329 pr_err("lapb_register error: %d\n", err);
329330 return -ENODEV;
330331 }
@@ -446,7 +447,7 @@ static int lapbeth_device_event(struct notifier_block *this, · 115 unmodified lines
446447 if (dev_net(dev) != &init_net)
447448 return NOTIFY_DONE;
448449
449− if (!dev_is_ethdev(dev))
450+ if (!dev_is_ethdev(dev) && !lapbeth_get_x25_dev(dev))
450451 return NOTIFY_DONE;
451452
452453 switch (event) {
drivers/net/wireless/ath/ath11k/qmi.h+1−1
@@ -27,7 +27,7 @@ · 26 unmodified lines
2727 #define ATH11K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01 52
2828 #define ATH11K_QMI_CALDB_SIZE 0x480000
2929 #define ATH11K_QMI_BDF_EXT_STR_LENGTH 0x20
30−#define ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT 3
30+#define ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT 5
3131
3232 #define QMI_WLFW_REQUEST_MEM_IND_V01 0x0035
3333 #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
287287 goto err;
288288 }
289289
290− rtnl_lock();
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();
290+ ret = regulatory_set_wiphy_regd(ar->hw->wiphy, regd_copy);
295291
296292 kfree(regd_copy);
297293
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
228228 brcmf_fweh_event_name(event->code), event->code,
229229 event->emsg.ifidx, event->emsg.bsscfgidx,
230230 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+ }
231235
232236 /* convert event message */
233237 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
52325232 return -1;
52335233 }
52345234
5235−static int set_wep_key(struct airo_info *ai, u16 index, const char *key,
5235+static int set_wep_key(struct airo_info *ai, u16 index, const u8 *key,
52365236 u16 keylen, int perm, int lock)
52375237 {
52385238 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
52835283 struct net_device *dev = pde_data(inode);
52845284 struct airo_info *ai = dev->ml_priv;
52855285 int i, rc;
5286− char key[16];
5286+ u8 key[16];
52875287 u16 index = 0;
52885288 int j = 0;
52895289
@@ -5311,12 +5311,22 @@ static void proc_wepkey_on_close(struct inode *inode, struct file *file) · 21 unmodified lines
53115311 }
53125312
53135313 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+ }
53145324 switch(i%3) {
53155325 case 0:
5316− key[i/3] = hex_to_bin(data->wbuffer[i+j])<<4;
5326+ key[i/3] = (u8)val << 4;
53175327 break;
53185328 case 1:
5319− key[i/3] |= hex_to_bin(data->wbuffer[i+j]);
5329+ key[i/3] |= (u8)val;
53205330 break;
53215331 }
53225332 }
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
910910 struct hwsim_vif_priv *vp = (void *)vif->drv_priv;
911911 struct sk_buff *skb;
912912 struct ieee80211_hdr *hdr;
913+ struct ieee80211_tx_info *cb;
913914
914915 if (!vp->assoc)
915916 return;
@@ -931,6 +932,10 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac, · 15 unmodified lines
931932 memcpy(hdr->addr2, mac, ETH_ALEN);
932933 memcpy(hdr->addr3, vp->bssid, ETH_ALEN);
933934
935+ cb = IEEE80211_SKB_CB(skb);
936+ cb->control.rates[0].count = 1;
937+ cb->control.rates[1].idx = -1;
938+
934939 rcu_read_lock();
935940 mac80211_hwsim_tx_frame(data->hw, skb,
936941 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
10231023 {
10241024 u32 reg, reg2;
10251025 unsigned int i;
1026− char put_to_sleep;
1027− char bbp_state;
1028− char rf_state;
1026+ bool put_to_sleep;
1027+ u8 bbp_state;
1028+ u8 rf_state;
10291029
10301030 put_to_sleep = (state != STATE_AWAKE);
10311031
@@ -1561,7 +1561,7 @@ static int rt2400pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 529 unmodified lines
15611561 {
15621562 struct hw_mode_spec *spec = &rt2x00dev->spec;
15631563 struct channel_info *info;
1564− char *tx_power;
1564+ u8 *tx_power;
15651565 unsigned int i;
15661566
15671567 /*
drivers/net/wireless/ralink/rt2x00/rt2400pci.h+1−1
@@ -939,7 +939,7 @@ · 938 unmodified lines
939939 #define DEFAULT_TXPOWER 39
940940
941941 #define __CLAMP_TX(__txpower) \
942− clamp_t(char, (__txpower), MIN_TXPOWER, MAX_TXPOWER)
942+ clamp_t(u8, (__txpower), MIN_TXPOWER, MAX_TXPOWER)
943943
944944 #define TXPOWER_FROM_DEV(__txpower) \
945945 ((__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
11761176 {
11771177 u32 reg, reg2;
11781178 unsigned int i;
1179− char put_to_sleep;
1180− char bbp_state;
1181− char rf_state;
1179+ bool put_to_sleep;
1180+ u8 bbp_state;
1181+ u8 rf_state;
11821182
11831183 put_to_sleep = (state != STATE_AWAKE);
11841184
@@ -1856,7 +1856,7 @@ static int rt2500pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 671 unmodified lines
18561856 {
18571857 struct hw_mode_spec *spec = &rt2x00dev->spec;
18581858 struct channel_info *info;
1859− char *tx_power;
1859+ u8 *tx_power;
18601860 unsigned int i;
18611861
18621862 /*
drivers/net/wireless/ralink/rt2x00/rt2500pci.h+1−1
@@ -1219,6 +1219,6 @@ · 1218 unmodified lines
12191219 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)
12201220
12211221 #define TXPOWER_TO_DEV(__txpower) \
1222− clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER)
1222+ clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER)
12231223
12241224 #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
984984 u16 reg;
985985 u16 reg2;
986986 unsigned int i;
987− char put_to_sleep;
988− char bbp_state;
989− char rf_state;
987+ bool put_to_sleep;
988+ u8 bbp_state;
989+ u8 rf_state;
990990
991991 put_to_sleep = (state != STATE_AWAKE);
992992
@@ -1663,7 +1663,7 @@ static int rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 670 unmodified lines
16631663 {
16641664 struct hw_mode_spec *spec = &rt2x00dev->spec;
16651665 struct channel_info *info;
1666− char *tx_power;
1666+ u8 *tx_power;
16671667 unsigned int i;
16681668
16691669 /*
drivers/net/wireless/ralink/rt2x00/rt2500usb.h+1−1
@@ -839,6 +839,6 @@ · 838 unmodified lines
839839 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)
840840
841841 #define TXPOWER_TO_DEV(__txpower) \
842− clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER)
842+ clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER)
843843
844844 #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
33723372 if (rt2x00_has_cap_bt_coexist(rt2x00dev)) {
33733373 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) {
33743374 /* 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,
33763376 0x83, 0x73, 0x73, 0x63, 0x53, 0x53,
33773377 0x53, 0x43, 0x43, 0x43, 0x43, 0x43};
3378− static const char r59_bt_rev[] = {0x0e, 0x0e,
3378+ static const u8 r59_bt_rev[] = {0x0e, 0x0e,
33793379 0x0e, 0x0e, 0x0e, 0x0b, 0x0a, 0x09,
33803380 0x07, 0x07, 0x07, 0x07, 0x07, 0x07};
33813381
@@ -3384,7 +3384,7 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, · 2 unmodified lines
33843384 rt2800_rfcsr_write(rt2x00dev, 59,
33853385 r59_bt_rev[idx]);
33863386 } else {
3387− static const char r59_bt[] = {0x8b, 0x8b, 0x8b,
3387+ static const u8 r59_bt[] = {0x8b, 0x8b, 0x8b,
33883388 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x89,
33893389 0x88, 0x88, 0x86, 0x85, 0x84};
33903390
@@ -3392,10 +3392,10 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, · 1 unmodified line
33923392 }
33933393 } else {
33943394 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,
33963396 0x23, 0x23, 0x13, 0x13, 0x03, 0x03,
33973397 0x03, 0x03, 0x03, 0x03, 0x03, 0x03};
3398− static const char r59_nonbt_rev[] = {0x07, 0x07,
3398+ static const u8 r59_nonbt_rev[] = {0x07, 0x07,
33993399 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
34003400 0x07, 0x07, 0x06, 0x05, 0x04, 0x04};
34013401
@@ -3406,14 +3406,14 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, · 4 unmodified lines
34063406 } else if (rt2x00_rt(rt2x00dev, RT5390) ||
34073407 rt2x00_rt(rt2x00dev, RT5392) ||
34083408 rt2x00_rt(rt2x00dev, RT6352)) {
3409− static const char r59_non_bt[] = {0x8f, 0x8f,
3409+ static const u8 r59_non_bt[] = {0x8f, 0x8f,
34103410 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8d,
34113411 0x8a, 0x88, 0x88, 0x87, 0x87, 0x86};
34123412
34133413 rt2800_rfcsr_write(rt2x00dev, 59,
34143414 r59_non_bt[idx]);
34153415 } else if (rt2x00_rt(rt2x00dev, RT5350)) {
3416− static const char r59_non_bt[] = {0x0b, 0x0b,
3416+ static const u8 r59_non_bt[] = {0x0b, 0x0b,
34173417 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a,
34183418 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06};
34193419
@@ -4035,23 +4035,23 @@ static void rt2800_iq_calibrate(struct rt2x00_dev *rt2x00dev, int channel) · 615 unmodified lines
40354035 rt2800_bbp_write(rt2x00dev, 159, cal != 0xff ? cal : 0);
40364036 }
40374037
4038−static char rt2800_txpower_to_dev(struct rt2x00_dev *rt2x00dev,
4038+static s8 rt2800_txpower_to_dev(struct rt2x00_dev *rt2x00dev,
40394039 unsigned int channel,
4040− char txpower)
4040+ s8 txpower)
40414041 {
40424042 if (rt2x00_rt(rt2x00dev, RT3593) ||
40434043 rt2x00_rt(rt2x00dev, RT3883))
40444044 txpower = rt2x00_get_field8(txpower, EEPROM_TXPOWER_ALC);
40454045
40464046 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);
40484048
40494049 if (rt2x00_rt(rt2x00dev, RT3593) ||
40504050 rt2x00_rt(rt2x00dev, RT3883))
4051− return clamp_t(char, txpower, MIN_A_TXPOWER_3593,
4051+ return clamp_t(s8, txpower, MIN_A_TXPOWER_3593,
40524052 MAX_A_TXPOWER_3593);
40534053 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);
40554055 }
40564056
40574057 static void rt3883_bbp_adjust(struct rt2x00_dev *rt2x00dev,
@@ -8530,7 +8530,7 @@ static void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev) · 4472 unmodified lines
85308530 u8 bytevalue = 0;
85318531 int rcalcode;
85328532 u8 r_cal_code = 0;
8533− char d1 = 0, d2 = 0;
8533+ s8 d1 = 0, d2 = 0;
85348534 u8 rfvalue;
85358535 u32 MAC_RF_BYPASS0, MAC_RF_CONTROL0, MAC_PWR_PIN_CFG;
85368536 u32 maccfg;
@@ -8591,7 +8591,7 @@ static void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev) · 54 unmodified lines
85918591 if (bytevalue > 128)
85928592 d1 = bytevalue - 256;
85938593 else
8594− d1 = (char)bytevalue;
8594+ d1 = (s8)bytevalue;
85958595 rt2800_bbp_write(rt2x00dev, 22, 0x0);
85968596 rt2800_rfcsr_write_bank(rt2x00dev, 0, 35, 0x01);
85978597
@@ -8601,7 +8601,7 @@ static void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev) · 3 unmodified lines
86018601 if (bytevalue > 128)
86028602 d2 = bytevalue - 256;
86038603 else
8604− d2 = (char)bytevalue;
8604+ d2 = (s8)bytevalue;
86058605 rt2800_bbp_write(rt2x00dev, 22, 0x0);
86068606
86078607 rcalcode = rt2800_calcrcalibrationcode(rt2x00dev, d1, d2);
@@ -8703,7 +8703,7 @@ static void rt2800_rxdcoc_calibration(struct rt2x00_dev *rt2x00dev) · 95 unmodified lines
87038703 static u32 rt2800_do_sqrt_accumulation(u32 si)
87048704 {
87058705 u32 root, root_pre, bit;
8706− char i;
8706+ s8 i;
87078707
87088708 bit = 1 << 15;
87098709 root = 0;
@@ -9330,11 +9330,11 @@ static void rt2800_loft_search(struct rt2x00_dev *rt2x00dev, u8 ch_idx, · 620 unmodified lines
93309330 u8 alc_idx, u8 dc_result[][RF_ALC_NUM][2])
93319331 {
93329332 u32 p0 = 0, p1 = 0, pf = 0;
9333− char idx0 = 0, idx1 = 0;
9333+ s8 idx0 = 0, idx1 = 0;
93349334 u8 idxf[] = {0x00, 0x00};
93359335 u8 ibit = 0x20;
93369336 u8 iorq;
9337− char bidx;
9337+ s8 bidx;
93389338
93399339 rt2800_bbp_write(rt2x00dev, 158, 0xb0);
93409340 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
93849384 static void rt2800_iq_search(struct rt2x00_dev *rt2x00dev, u8 ch_idx, u8 *ges, u8 *pes)
93859385 {
93869386 u32 p0 = 0, p1 = 0, pf = 0;
9387− char perr = 0, gerr = 0, iq_err = 0;
9388− char pef = 0, gef = 0;
9389− char psta, pend;
9390− char gsta, gend;
9387+ s8 perr = 0, gerr = 0, iq_err = 0;
9388+ s8 pef = 0, gef = 0;
9389+ s8 psta, pend;
9390+ s8 gsta, gend;
93919391
93929392 u8 ibit = 0x20;
93939393 u8 first_search = 0x00, touch_neg_max = 0x00;
9394− char idx0 = 0, idx1 = 0;
9394+ s8 idx0 = 0, idx1 = 0;
93959395 u8 gop;
93969396 u8 bbp = 0;
9397− char bidx;
9397+ s8 bidx;
93989398
93999399 for (bidx = 5; bidx >= 1; bidx--) {
94009400 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
1004310043 return 0;
1004410044 }
1004510045
10046−static char rt2800_lp_tx_filter_bw_cal(struct rt2x00_dev *rt2x00dev)
10046+static s8 rt2800_lp_tx_filter_bw_cal(struct rt2x00_dev *rt2x00dev)
1004710047 {
1004810048 unsigned int cnt;
1004910049 u8 bbp_val;
10050− char cal_val;
10050+ s8 cal_val;
1005110051
1005210052 rt2800_bbp_dcoc_write(rt2x00dev, 0, 0x82);
1005310053
@@ -10079,7 +10079,7 @@ static void rt2800_bw_filter_calibration(struct rt2x00_dev *rt2x00dev, · 25 unmodified lines
1007910079 u8 rx_filter_target_20m = 0x27, rx_filter_target_40m = 0x31;
1008010080 int loop = 0, is_ht40, cnt;
1008110081 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;
1008310083 u8 saverfb5r00, saverfb5r01, saverfb5r03, saverfb5r04, saverfb5r05;
1008410084 u8 saverfb5r06, saverfb5r07;
1008510085 u8 saverfb5r08, saverfb5r17, saverfb5r18, saverfb5r19, saverfb5r20;
@@ -11550,9 +11550,9 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 1464 unmodified lines
1155011550 {
1155111551 struct hw_mode_spec *spec = &rt2x00dev->spec;
1155211552 struct channel_info *info;
11553− char *default_power1;
11554− char *default_power2;
11555− char *default_power3;
11553+ s8 *default_power1;
11554+ s8 *default_power2;
11555+ s8 *default_power3;
1155611556 unsigned int i, tx_chains, rx_chains;
1155711557 u32 reg;
1155811558
drivers/net/wireless/ralink/rt2x00/rt2800lib.h+4−4
@@ -32,10 +32,10 @@ struct rf_reg_pair { · 31 unmodified lines
3232 struct rt2800_drv_data {
3333 u8 calibration_bw20;
3434 u8 calibration_bw40;
35− char rx_calibration_bw20;
36− char rx_calibration_bw40;
37− char tx_calibration_bw20;
38− char tx_calibration_bw40;
35+ s8 rx_calibration_bw20;
36+ s8 rx_calibration_bw40;
37+ s8 tx_calibration_bw20;
38+ s8 tx_calibration_bw40;
3939 u8 bbp25;
4040 u8 bbp26;
4141 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
117117 const u16 buffer_length)
118118 {
119119 int status = 0;
120− unsigned char *tb;
120+ u8 *tb;
121121 u16 off, len, bsize;
122122
123123 mutex_lock(&rt2x00dev->csr_mutex);
124124
125− tb = (char *)buffer;
125+ tb = (u8 *)buffer;
126126 off = offset;
127127 len = buffer_length;
128128 while (len && !status) {
@@ -215,7 +215,7 @@ void rt2x00usb_register_read_async(struct rt2x00_dev *rt2x00dev, · 86 unmodified lines
215215 rd->cr.wLength = cpu_to_le16(sizeof(u32));
216216
217217 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),
219219 rt2x00usb_register_read_async_cb, rd);
220220 usb_anchor_urb(urb, rt2x00dev->anchor);
221221 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
17091709 {
17101710 u32 reg, reg2;
17111711 unsigned int i;
1712− char put_to_sleep;
1712+ bool put_to_sleep;
17131713
17141714 put_to_sleep = (state != STATE_AWAKE);
17151715
@@ -2656,7 +2656,7 @@ static int rt61pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 940 unmodified lines
26562656 {
26572657 struct hw_mode_spec *spec = &rt2x00dev->spec;
26582658 struct channel_info *info;
2659− char *tx_power;
2659+ u8 *tx_power;
26602660 unsigned int i;
26612661
26622662 /*
drivers/net/wireless/ralink/rt2x00/rt61pci.h+1−1
@@ -1484,6 +1484,6 @@ struct hw_pairwise_ta_entry { · 1483 unmodified lines
14841484 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)
14851485
14861486 #define TXPOWER_TO_DEV(__txpower) \
1487− clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER)
1487+ clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER)
14881488
14891489 #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
13781378 {
13791379 u32 reg, reg2;
13801380 unsigned int i;
1381− char put_to_sleep;
1381+ bool put_to_sleep;
13821382
13831383 put_to_sleep = (state != STATE_AWAKE);
13841384
@@ -2090,7 +2090,7 @@ static int rt73usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 705 unmodified lines
20902090 {
20912091 struct hw_mode_spec *spec = &rt2x00dev->spec;
20922092 struct channel_info *info;
2093− char *tx_power;
2093+ u8 *tx_power;
20942094 unsigned int i;
20952095
20962096 /*
drivers/net/wireless/ralink/rt2x00/rt73usb.h+1−1
@@ -1063,6 +1063,6 @@ struct hw_pairwise_ta_entry { · 1062 unmodified lines
10631063 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)
10641064
10651065 #define TXPOWER_TO_DEV(__txpower) \
1066− clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER)
1066+ clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER)
10671067
10681068 #endif /* RT73USB_H */
drivers/net/wwan/Kconfig+1−1
@@ -94,7 +94,7 @@ config RPMSG_WWAN_CTRL · 93 unmodified lines
9494
9595 config IOSM
9696 tristate "IOSM Driver for Intel M.2 WWAN Device"
97− depends on INTEL_IOMMU
97+ depends on PCI
9898 select NET_DEVLINK
9999 select RELAY if WWAN_DEBUGFS
100100 help
drivers/net/wwan/iosm/iosm_ipc_coredump.c+1−0
@@ -2,6 +2,7 @@ · 1 unmodified line
22 /*
33 * Copyright (C) 2020-2021 Intel Corporation.
44 */
5+#include <linux/vmalloc.h>
56
67 #include "iosm_ipc_coredump.h"
78
drivers/net/wwan/iosm/iosm_ipc_devlink.c+1−0
@@ -2,6 +2,7 @@ · 1 unmodified line
22 /*
33 * Copyright (C) 2020-2021 Intel Corporation.
44 */
5+#include <linux/vmalloc.h>
56
67 #include "iosm_ipc_chnl_cfg.h"
78 #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
9191 }
9292
9393 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+
94102 ipc_imem_channel_init(ipc_imem, IPC_CTYPE_WWAN, chnl_cfg,
95103 IRQ_MOD_OFF);
96104
drivers/net/wwan/iosm/iosm_ipc_mux.h+1−0
@@ -10,6 +10,7 @@ · 9 unmodified lines
1010
1111 #define IPC_MEM_MAX_UL_DG_ENTRIES 100
1212 #define IPC_MEM_MAX_TDS_MUX_AGGR_UL 60
13+#define IPC_MEM_MAX_TDS_MUX_AGGR_DL 60
1314
1415 #define IPC_MEM_MAX_ADB_BUF_SIZE (16 * 1024)
1516 #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
232232 */
233233 static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev)
234234 {
235+ enum ipc_pcie_sleep_state sleep_state = IPC_PCIE_D0L12;
235236 union acpi_object *object;
236237 acpi_handle handle_acpi;
237238
@@ -242,18 +243,23 @@ static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev) · 4 unmodified lines
242243 }
243244
244245 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;
245251
246− if (object && object->integer.value == 3)
247− return IPC_PCIE_D3L2;
252+ kfree(object);
248253
249254 default_ret:
250− return IPC_PCIE_D0L12;
255+ return sleep_state;
251256 }
252257
253258 static int ipc_pcie_probe(struct pci_dev *pci,
254259 const struct pci_device_id *pci_id)
255260 {
256261 struct iosm_pcie *ipc_pcie = kzalloc(sizeof(*ipc_pcie), GFP_KERNEL);
262+ int ret;
257263
258264 pr_debug("Probing device 0x%X from the vendor 0x%X", pci_id->device,
259265 pci_id->vendor);
@@ -286,6 +292,12 @@ static int ipc_pcie_probe(struct pci_dev *pci, · 26 unmodified lines
286292 goto pci_enable_fail;
287293 }
288294
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+
289301 ipc_pcie_config_aspm(ipc_pcie);
290302 dev_dbg(ipc_pcie->dev, "PCIe device enabled.");
291303
drivers/net/wwan/iosm/iosm_ipc_wwan.c+7−36
@@ -40,13 +40,11 @@ struct iosm_netdev_priv { · 39 unmodified lines
4040 * @ipc_imem: Pointer to imem data-struct
4141 * @sub_netlist: List of active netdevs
4242 * @dev: Pointer device structure
43− * @if_mutex: Mutex used for add and remove interface id
4443 */
4544 struct iosm_wwan {
4645 struct iosm_imem *ipc_imem;
4746 struct iosm_netdev_priv __rcu *sub_netlist[IP_MUX_SESSION_END + 1];
4847 struct device *dev;
49− struct mutex if_mutex; /* Mutex used for add and remove interface id */
5048 };
5149
5250 /* Bring-up the wwan net link */
@@ -55,14 +53,11 @@ static int ipc_wwan_link_open(struct net_device *netdev) · 2 unmodified lines
5553 struct iosm_netdev_priv *priv = wwan_netdev_drvpriv(netdev);
5654 struct iosm_wwan *ipc_wwan = priv->ipc_wwan;
5755 int if_id = priv->if_id;
58− int ret;
5956
6057 if (if_id < IP_MUX_SESSION_START ||
6158 if_id >= ARRAY_SIZE(ipc_wwan->sub_netlist))
6259 return -EINVAL;
6360
64− mutex_lock(&ipc_wwan->if_mutex);
65−
6661 /* get channel id */
6762 priv->ch_id = ipc_imem_sys_wwan_open(ipc_wwan->ipc_imem, if_id);
6863
@@ -70,8 +65,7 @@ static int ipc_wwan_link_open(struct net_device *netdev) · 1 unmodified line
7065 dev_err(ipc_wwan->dev,
7166 "cannot connect wwan0 & id %d to the IPC mem layer",
7267 if_id);
73− ret = -ENODEV;
74− goto out;
68+ return -ENODEV;
7569 }
7670
7771 /* enable tx path, DL data may follow */
@@ -80,10 +74,7 @@ static int ipc_wwan_link_open(struct net_device *netdev) · 2 unmodified lines
8074 dev_dbg(ipc_wwan->dev, "Channel id %d allocated to if_id %d",
8175 priv->ch_id, priv->if_id);
8276
83− ret = 0;
84−out:
85− mutex_unlock(&ipc_wwan->if_mutex);
86− return ret;
77+ return 0;
8778 }
8879
8980 /* Bring-down the wwan net link */
@@ -93,11 +84,9 @@ static int ipc_wwan_link_stop(struct net_device *netdev) · 3 unmodified lines
9384
9485 netif_stop_queue(netdev);
9586
96− mutex_lock(&priv->ipc_wwan->if_mutex);
9787 ipc_imem_sys_wwan_close(priv->ipc_wwan->ipc_imem, priv->if_id,
9888 priv->ch_id);
9989 priv->ch_id = -1;
100− mutex_unlock(&priv->ipc_wwan->if_mutex);
10190
10291 return 0;
10392 }
@@ -168,6 +157,7 @@ static void ipc_wwan_setup(struct net_device *iosm_dev) · 64 unmodified lines
168157 iosm_dev->max_mtu = ETH_MAX_MTU;
169158
170159 iosm_dev->flags = IFF_POINTOPOINT | IFF_NOARP;
160+ iosm_dev->needs_free_netdev = true;
171161
172162 iosm_dev->netdev_ops = &ipc_inm_ops;
173163 }
@@ -189,26 +179,17 @@ static int ipc_wwan_newlink(void *ctxt, struct net_device *dev, · 15 unmodified lines
189179 priv->netdev = dev;
190180 priv->ipc_wwan = ipc_wwan;
191181
192− mutex_lock(&ipc_wwan->if_mutex);
193− if (rcu_access_pointer(ipc_wwan->sub_netlist[if_id])) {
194− err = -EBUSY;
195− goto out_unlock;
196− }
182+ if (rcu_access_pointer(ipc_wwan->sub_netlist[if_id]))
183+ return -EBUSY;
197184
198185 err = register_netdevice(dev);
199186 if (err)
200− goto out_unlock;
187+ return err;
201188
202189 rcu_assign_pointer(ipc_wwan->sub_netlist[if_id], priv);
203− mutex_unlock(&ipc_wwan->if_mutex);
204−
205190 netif_device_attach(dev);
206191
207192 return 0;
208−
209−out_unlock:
210− mutex_unlock(&ipc_wwan->if_mutex);
211− return err;
212193 }
213194
214195 static 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
222203 if_id >= ARRAY_SIZE(ipc_wwan->sub_netlist)))
223204 return;
224205
225− mutex_lock(&ipc_wwan->if_mutex);
226−
227206 if (WARN_ON(rcu_access_pointer(ipc_wwan->sub_netlist[if_id]) != priv))
228− goto unlock;
207+ return;
229208
230209 RCU_INIT_POINTER(ipc_wwan->sub_netlist[if_id], NULL);
231210 /* unregistering includes synchronize_net() */
232211 unregister_netdevice_queue(dev, head);
233−
234−unlock:
235− mutex_unlock(&ipc_wwan->if_mutex);
236212 }
237213
238214 static 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
323299 ipc_wwan->dev = dev;
324300 ipc_wwan->ipc_imem = ipc_imem;
325301
326− mutex_init(&ipc_wwan->if_mutex);
327−
328302 /* WWAN core will create a netdev for the default IP MUX channel */
329303 if (wwan_register_ops(ipc_wwan->dev, &iosm_wwan_ops, ipc_wwan,
330304 IP_MUX_SESSION_DEFAULT)) {
331− mutex_destroy(&ipc_wwan->if_mutex);
332305 kfree(ipc_wwan);
333306 return NULL;
334307 }
@@ -341,7 +314,5 @@ void ipc_wwan_deinit(struct iosm_wwan *ipc_wwan) · 6 unmodified lines
341314 /* This call will remove all child netdev(s) */
342315 wwan_unregister_ops(ipc_wwan->dev);
343316
344− mutex_destroy(&ipc_wwan->if_mutex);
345−
346317 kfree(ipc_wwan);
347318 }
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
582582 ndev->min_mtu = ETH_MIN_MTU;
583583 ndev->max_mtu = MHI_MAX_BUF_SZ - ndev->needed_headroom;
584584 ndev->tx_queue_len = 1000;
585+ ndev->needs_free_netdev = true;
585586 }
586587
587588 static 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
675675 if (req->mq_hctx->type == HCTX_TYPE_POLL)
676676 req->cmd_flags |= REQ_POLLED;
677677 nvme_clear_nvme_request(req);
678+ req->rq_flags |= RQF_QUIET;
678679 memcpy(nvme_req(req)->cmd, cmd, sizeof(*cmd));
679680 }
680681 EXPORT_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
10371038 goto out;
10381039 }
10391040
1040− req->rq_flags |= RQF_QUIET;
10411041 ret = nvme_execute_rq(req, at_head);
10421042 if (result && ret >= 0)
10431043 *result = nvme_req(req)->result;
@@ -1227,7 +1227,6 @@ static void nvme_keep_alive_work(struct work_struct *work) · 183 unmodified lines
12271227 rq->timeout = ctrl->kato * HZ;
12281228 rq->end_io = nvme_keep_alive_end_io;
12291229 rq->end_io_data = ctrl;
1230− rq->rq_flags |= RQF_QUIET;
12311230 blk_execute_rq_nowait(rq, false);
12321231 }
12331232
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
14361436
14371437 abort_req->end_io = abort_endio;
14381438 abort_req->end_io_data = NULL;
1439− abort_req->rq_flags |= RQF_QUIET;
14401439 blk_execute_rq_nowait(abort_req, false);
14411440
14421441 /*
@@ -2490,7 +2489,6 @@ static int nvme_delete_queue(struct nvme_queue *nvmeq, u8 opcode) · 1047 unmodified lines
24902489 req->end_io_data = nvmeq;
24912490
24922491 init_completion(&nvmeq->delete_done);
2493− req->rq_flags |= RQF_QUIET;
24942492 blk_execute_rq_nowait(req, false);
24952493 return 0;
24962494 }
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
12151215 const char *page, size_t count)
12161216 {
12171217 int pos = 0, len;
1218+ char *val;
12181219
12191220 if (subsys->subsys_discovered) {
12201221 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
12371238 return -EINVAL;
12381239 }
12391240
1240− subsys->model_number = kmemdup_nul(page, len, GFP_KERNEL);
1241− if (!subsys->model_number)
1241+ val = kmemdup_nul(page, len, GFP_KERNEL);
1242+ if (!val)
12421243 return -ENOMEM;
1244+ kfree(subsys->model_number);
1245+ subsys->model_number = val;
12431246 return count;
12441247 }
12451248
@@ -1836,6 +1839,7 @@ static void nvmet_host_release(struct config_item *item) · 590 unmodified lines
18361839
18371840 #ifdef CONFIG_NVME_TARGET_AUTH
18381841 kfree(host->dhchap_secret);
1842+ kfree(host->dhchap_ctrl_secret);
18391843 #endif
18401844 kfree(host);
18411845 }
drivers/pci/controller/pci-hyperv.c+16−6
@@ -1614,7 +1614,7 @@ out: · 1613 unmodified lines
16141614
16151615 static u32 hv_compose_msi_req_v1(
16161616 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)
16181618 {
16191619 int_pkt->message_type.type = PCI_CREATE_INTERRUPT_MESSAGE;
16201620 int_pkt->wslot.slot = slot;
@@ -1642,7 +1642,7 @@ static int hv_compose_msi_req_get_cpu(const struct cpumask *affinity) · 21 unmodified lines
16421642
16431643 static u32 hv_compose_msi_req_v2(
16441644 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)
16461646 {
16471647 int cpu;
16481648
@@ -1661,7 +1661,7 @@ static u32 hv_compose_msi_req_v2( · 12 unmodified lines
16611661
16621662 static u32 hv_compose_msi_req_v3(
16631663 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)
16651665 {
16661666 int cpu;
16671667
@@ -1701,7 +1701,12 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · 33 unmodified lines
17011701 struct compose_comp_ctxt comp;
17021702 struct tran_int_desc *int_desc;
17031703 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;
17051710 struct {
17061711 struct pci_packet pci_pkt;
17071712 union {
@@ -1767,6 +1772,11 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · 59 unmodified lines
17671772 vector_count = 1;
17681773 }
17691774
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+ */
17701780 memset(&ctxt, 0, sizeof(ctxt));
17711781 init_completion(&comp.comp_pkt.host_event);
17721782 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
17771787 size = hv_compose_msi_req_v1(&ctxt.int_pkts.v1,
17781788 dest,
17791789 hpdev->desc.win_slot.slot,
1780− vector,
1790+ (u8)vector,
17811791 vector_count);
17821792 break;
17831793
@@ -1786,7 +1796,7 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · 2 unmodified lines
17861796 size = hv_compose_msi_req_v2(&ctxt.int_pkts.v2,
17871797 dest,
17881798 hpdev->desc.win_slot.slot,
1789− vector,
1799+ (u8)vector,
17901800 vector_count);
17911801 break;
17921802
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
22402240 static void qmp_combo_disable_autonomous_mode(struct qmp_phy *qphy)
22412241 {
22422242 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;
22442244 void __iomem *pcs_misc = qphy->pcs_misc;
22452245
22462246 /* 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
280280 }
281281
282282 static const struct soc_device_attribute mt7621_pci_quirks_match[] = {
283− { .soc_id = "mt7621", .revision = "E2" }
283+ { .soc_id = "mt7621", .revision = "E2" },
284+ { /* sentinel */ }
284285 };
285286
286287 static 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
710710 ret = of_property_read_u32(child, "reg", &index);
711711 if (ret || index > usbphyc->nphys) {
712712 dev_err(&phy->dev, "invalid reg property: %d\n", ret);
713+ if (!ret)
714+ ret = -EINVAL;
713715 goto put_child;
714716 }
715717
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
256256 usbphy->moon4_res_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "moon4");
257257 usbphy->moon4_regs = devm_ioremap(&pdev->dev, usbphy->moon4_res_mem->start,
258258 resource_size(usbphy->moon4_res_mem));
259− if (IS_ERR(usbphy->moon4_regs))
260− return PTR_ERR(usbphy->moon4_regs);
259+ if (!usbphy->moon4_regs)
260+ return -ENOMEM;
261261
262262 usbphy->phy_clk = devm_clk_get(&pdev->dev, NULL);
263263 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
14611461
14621462 void tegra_phy_xusb_utmi_pad_power_on(struct phy *phy)
14631463 {
1464− struct tegra_xusb_lane *lane = phy_get_drvdata(phy);
1465− struct tegra_xusb_padctl *padctl = lane->pad->padctl;
1464+ struct tegra_xusb_lane *lane;
1465+ struct tegra_xusb_padctl *padctl;
1466+
1467+ if (!phy)
1468+ return;
1469+
1470+ lane = phy_get_drvdata(phy);
1471+ padctl = lane->pad->padctl;
14661472
14671473 if (padctl->soc->ops->utmi_pad_power_on)
14681474 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
14711477
14721478 void tegra_phy_xusb_utmi_pad_power_down(struct phy *phy)
14731479 {
1474− struct tegra_xusb_lane *lane = phy_get_drvdata(phy);
1475− struct tegra_xusb_padctl *padctl = lane->pad->padctl;
1480+ struct tegra_xusb_lane *lane;
1481+ struct tegra_xusb_padctl *padctl;
1482+
1483+ if (!phy)
1484+ return;
1485+
1486+ lane = phy_get_drvdata(phy);
1487+ padctl = lane->pad->padctl;
14761488
14771489 if (padctl->soc->ops->utmi_pad_power_down)
14781490 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
13001300 wwan_rfkill = NULL;
13011301 rfkill2_count = 0;
13021302
1303− if (hp_wmi_rfkill_setup(device))
1304− hp_wmi_rfkill2_setup(device);
1303+ /*
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+ }
13051313
13061314 err = hp_wmi_hwmon_init();
13071315
drivers/platform/x86/ideapad-laptop.c+24−1
@@ -1533,6 +1533,24 @@ static const struct dmi_system_id hw_rfkill_list[] = { · 1532 unmodified lines
15331533 {}
15341534 };
15351535
1536+static 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+
15361554 static void ideapad_check_features(struct ideapad_private *priv)
15371555 {
15381556 acpi_handle handle = priv->adev->handle;
@@ -1541,7 +1559,12 @@ static void ideapad_check_features(struct ideapad_private *priv) · 2 unmodified lines
15411559 priv->features.hw_rfkill_switch = dmi_check_system(hw_rfkill_list);
15421560
15431561 /* 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;
15451568
15461569 if (!read_ec_data(handle, VPCCMD_R_FAN, &val))
15471570 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
2727 {"INTC1051", 0},
2828 {"INTC1054", 0},
2929 {"INTC1070", 0},
30+ {"INTC1076", 0},
31+ {"INTC1077", 0},
32+ {"INTC1078", 0},
3033 {"", 0},
3134 };
3235 MODULE_DEVICE_TABLE(acpi, intel_hid_ids);
drivers/platform/x86/intel/pmt/class.c+30−1
@@ -9,6 +9,7 @@ · 8 unmodified lines
99 */
1010
1111 #include <linux/kernel.h>
12+#include <linux/io-64-nonatomic-lo-hi.h>
1213 #include <linux/module.h>
1314 #include <linux/mm.h>
1415 #include <linux/pci.h>
@@ -19,6 +20,7 @@ · 4 unmodified lines
1920 #define PMT_XA_START 0
2021 #define PMT_XA_MAX INT_MAX
2122 #define PMT_XA_LIMIT XA_LIMIT(PMT_XA_START, PMT_XA_MAX)
23+#define GUID_SPR_PUNIT 0x9956f43f
2224
2325 bool intel_pmt_is_early_client_hw(struct device *dev)
2426 {
@@ -33,6 +35,29 @@ bool intel_pmt_is_early_client_hw(struct device *dev) · 8 unmodified lines
3335 }
3436 EXPORT_SYMBOL_GPL(intel_pmt_is_early_client_hw);
3537
38+static inline int
39+pmt_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+
3661 /*
3762 * sysfs
3863 */
@@ -54,7 +79,11 @@ intel_pmt_read(struct file *filp, struct kobject *kobj, · 15 unmodified lines
5479 if (count > entry->size - off)
5580 count = entry->size - off;
5681
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);
5887
5988 return count;
6089 }
drivers/platform/x86/p2sb.c+6−9
@@ -19,26 +19,23 @@ · 18 unmodified lines
1919 #define P2SBC 0xe0
2020 #define P2SBC_HIDE BIT(8)
2121
22+#define P2SB_DEVFN_DEFAULT PCI_DEVFN(31, 1)
23+
2224 static const struct x86_cpu_id p2sb_cpu_ids[] = {
2325 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)),
3026 {}
3127 };
3228
3329 static int p2sb_get_devfn(unsigned int *devfn)
3430 {
31+ unsigned int fn = P2SB_DEVFN_DEFAULT;
3532 const struct x86_cpu_id *id;
3633
3734 id = x86_match_cpu(p2sb_cpu_ids);
38− if (!id)
39− return -ENODEV;
35+ if (id)
36+ fn = (unsigned int)id->driver_data;
4037
41− *devfn = (unsigned int)id->driver_data;
38+ *devfn = fn;
4239 return 0;
4340 }
4441
drivers/platform/x86/touchscreen_dmi.c+25−0
@@ -770,6 +770,22 @@ static const struct ts_dmi_data predia_basic_data = { · 769 unmodified lines
770770 .properties = predia_basic_props,
771771 };
772772
773+static 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+
784+static const struct ts_dmi_data rca_cambio_w101_v2_data = {
785+ .acpi_name = "MSSL1680:00",
786+ .properties = rca_cambio_w101_v2_props,
787+};
788+
773789 static const struct property_entry rwc_nanote_p8_props[] = {
774790 PROPERTY_ENTRY_U32("touchscreen-min-y", 46),
775791 PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),
@@ -1409,6 +1425,15 @@ const struct dmi_system_id touchscreen_dmi_table[] = { · 633 unmodified lines
14091425 DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"),
14101426 },
14111427 },
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+ },
14121437 {
14131438 /* RWC NANOTE P8 */
14141439 .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
342342 };
343343 struct {
344344 struct type6_hdr hdr;
345− struct CPRBX cprbx;
345+ union {
346+ struct CPRBX cprbx;
347+ DECLARE_FLEX_ARRAY(u8, userdata);
348+ };
346349 } __packed * msg = ap_msg->msg;
347350
348351 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
403406 msg->hdr.fromcardlen2 = xcrb->reply_data_length;
404407
405408 /* 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,
407411 xcrb->request_control_blk_length))
408412 return -EFAULT;
409413 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
469473
470474 struct {
471475 struct type6_hdr hdr;
472− struct ep11_cprb cprbx;
473− unsigned char pld_tag; /* fixed value 0x30 */
474− unsigned char pld_lenfmt; /* payload length format */
476+ union {
477+ struct {
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+ };
475484 } __packed * msg = ap_msg->msg;
476485
477486 struct pld_hdr {
@@ -500,7 +509,7 @@ static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap · 22 unmodified lines
500509 msg->hdr.fromcardlen1 = xcrb->resp_len;
501510
502511 /* 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,
504513 (char __force __user *)xcrb->req, xcrb->req_len)) {
505514 return -EFAULT;
506515 }
drivers/scsi/ibmvscsi/ibmvfc.c+11−3
@@ -708,8 +708,13 @@ static void ibmvfc_init_host(struct ibmvfc_host *vhost) · 707 unmodified lines
708708 memset(vhost->async_crq.msgs.async, 0, PAGE_SIZE);
709709 vhost->async_crq.cur = 0;
710710
711− list_for_each_entry(tgt, &vhost->targets, queue)
712− ibmvfc_del_tgt(tgt);
711+ list_for_each_entry(tgt, &vhost->targets, queue) {
712+ if (vhost->client_migrated)
713+ tgt->need_login = 1;
714+ else
715+ ibmvfc_del_tgt(tgt);
716+ }
717+
713718 scsi_block_requests(vhost->host);
714719 ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_INIT);
715720 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
32353240 /* We need to re-setup the interpartition connection */
32363241 dev_info(vhost->dev, "Partition migrated, Re-enabling adapter\n");
32373242 vhost->client_migrated = 1;
3243+
3244+ scsi_block_requests(vhost->host);
32383245 ibmvfc_purge_requests(vhost, DID_REQUEUE);
3239− ibmvfc_link_down(vhost, IBMVFC_LINK_DOWN);
3246+ ibmvfc_set_host_state(vhost, IBMVFC_LINK_DOWN);
32403247 ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_REENABLE);
3248+ wake_up(&vhost->work_wait_q);
32413249 } else if (crq->format == IBMVFC_PARTNER_FAILED || crq->format == IBMVFC_PARTNER_DEREGISTER) {
32423250 dev_err(vhost->dev, "Host partner adapter deregistered or failed (rc=%d)\n", crq->format);
32433251 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
18991899 arr[14] |= 0x40;
19001900 }
19011901
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+
19021909 arr[15] = sdebug_lowest_aligned & 0xff;
19031910
19041911 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
722722 int error;
723723
724724 error = device_add(&phy->dev);
725− if (!error) {
726− transport_add_device(&phy->dev);
727− transport_configure_device(&phy->dev);
725+ if (error)
726+ return error;
727+
728+ error = transport_add_device(&phy->dev);
729+ if (error) {
730+ device_del(&phy->dev);
731+ return error;
728732 }
733+ transport_configure_device(&phy->dev);
729734
730− return error;
735+ return 0;
731736 }
732737 EXPORT_SYMBOL(sas_phy_add);
733738
drivers/soundwire/intel.c+1−0
@@ -1513,6 +1513,7 @@ static int intel_link_probe(struct auxiliary_device *auxdev, · 1512 unmodified lines
15131513
15141514 bus->link_id = auxdev->id;
15151515 bus->dev_num_ida_min = INTEL_DEV_NUM_IDA_MIN;
1516+ bus->clk_stop_timeout = 1;
15161517
15171518 sdw_cdns_probe(cdns);
15181519
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
344344 if (swrm_wait_for_wr_fifo_avail(swrm))
345345 return SDW_CMD_FAIL_OTHER;
346346
347+ if (cmd_id == SWR_BROADCAST_CMD_ID)
348+ reinit_completion(&swrm->broadcast);
349+
347350 /* Its assumed that write is okay as we do not get any status back */
348351 swrm->reg_write(swrm, SWRM_CMD_FIFO_WR_CMD, val);
349352
@@ -377,6 +380,12 @@ static int qcom_swrm_cmd_fifo_rd_cmd(struct qcom_swrm_ctrl *swrm, · 27 unmodified lines
377380
378381 val = swrm_get_packed_reg_val(&swrm->rcmd_id, len, dev_addr, reg_addr);
379382
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+
380389 /* wait for FIFO RD to complete to avoid overflow */
381390 usleep_range(100, 105);
382391 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
6565 F_16_66MHz,
6666 F_100MHz,
6767 F_800KHz,
68− SPI_SPD7,
68+ SPI_SPD7 = 0x7,
6969 F_50MHz = 0x4,
7070 F_4MHz = 0x32,
7171 F_3_17MHz = 0x3F
drivers/spi/spi-intel.c+4−4
@@ -52,17 +52,17 @@ · 51 unmodified lines
5252 #define FRACC 0x50
5353
5454 #define FREG(n) (0x54 + ((n) * 4))
55−#define FREG_BASE_MASK 0x3fff
55+#define FREG_BASE_MASK GENMASK(14, 0)
5656 #define FREG_LIMIT_SHIFT 16
57−#define FREG_LIMIT_MASK (0x03fff << FREG_LIMIT_SHIFT)
57+#define FREG_LIMIT_MASK GENMASK(30, 16)
5858
5959 /* Offset is from @ispi->pregs */
6060 #define PR(n) ((n) * 4)
6161 #define PR_WPE BIT(31)
6262 #define PR_LIMIT_SHIFT 16
63−#define PR_LIMIT_MASK (0x3fff << PR_LIMIT_SHIFT)
63+#define PR_LIMIT_MASK GENMASK(30, 16)
6464 #define PR_RPE BIT(15)
65−#define PR_BASE_MASK 0x3fff
65+#define PR_BASE_MASK GENMASK(14, 0)
6666
6767 /* Offsets are from @ispi->sregs */
6868 #define SSFSTS_CTL 0x00
drivers/spi/spi-meson-spicc.c+22−2
@@ -160,6 +160,7 @@ struct meson_spicc_device { · 159 unmodified lines
160160 struct clk *clk;
161161 struct spi_message *message;
162162 struct spi_transfer *xfer;
163+ struct completion done;
163164 const struct meson_spicc_data *data;
164165 u8 *tx_buf;
165166 u8 *rx_buf;
@@ -282,7 +283,7 @@ static irqreturn_t meson_spicc_irq(int irq, void *data) · 116 unmodified lines
282283 /* Disable all IRQs */
283284 writel(0, spicc->base + SPICC_INTREG);
284285
285− spi_finalize_current_transfer(spicc->master);
286+ complete(&spicc->done);
286287
287288 return IRQ_HANDLED;
288289 }
@@ -386,6 +387,7 @@ static int meson_spicc_transfer_one(struct spi_master *master, · 97 unmodified lines
386387 struct spi_transfer *xfer)
387388 {
388389 struct meson_spicc_device *spicc = spi_master_get_devdata(master);
390+ uint64_t timeout;
389391
390392 /* Store current transfer */
391393 spicc->xfer = xfer;
@@ -410,13 +412,29 @@ static int meson_spicc_transfer_one(struct spi_master *master, · 18 unmodified lines
410412 /* Setup burst */
411413 meson_spicc_setup_burst(spicc);
412414
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+
413428 /* Start burst */
414429 writel_bits_relaxed(SPICC_XCH, SPICC_XCH, spicc->base + SPICC_CONREG);
415430
416431 /* Enable interrupts */
417432 writel_relaxed(SPICC_TC_EN, spicc->base + SPICC_INTREG);
418433
419− return 1;
434+ if (!wait_for_completion_timeout(&spicc->done, msecs_to_jiffies(timeout)))
435+ return -ETIMEDOUT;
436+
437+ return 0;
420438 }
421439
422440 static 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
743761 spicc->pdev = pdev;
744762 platform_set_drvdata(pdev, spicc);
745763
764+ init_completion(&spicc->done);
765+
746766 spicc->base = devm_platform_ioremap_resource(pdev, 0);
747767 if (IS_ERR(spicc->base)) {
748768 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
551551 writel(cmd, mdata->base + SPI_CMD_REG);
552552 }
553553
554−static int mtk_spi_get_mult_delta(u32 xfer_len)
554+static int mtk_spi_get_mult_delta(struct mtk_spi *mdata, u32 xfer_len)
555555 {
556− u32 mult_delta;
556+ u32 mult_delta = 0;
557557
558− if (xfer_len > MTK_SPI_PACKET_SIZE)
559− mult_delta = xfer_len % MTK_SPI_PACKET_SIZE;
560− else
561− mult_delta = 0;
558+ if (mdata->dev_comp->ipm_design) {
559+ if (xfer_len > MTK_SPI_IPM_PACKET_SIZE)
560+ mult_delta = xfer_len % MTK_SPI_IPM_PACKET_SIZE;
561+ } else {
562+ if (xfer_len > MTK_SPI_PACKET_SIZE)
563+ mult_delta = xfer_len % MTK_SPI_PACKET_SIZE;
564+ }
562565
563566 return mult_delta;
564567 }
@@ -570,22 +573,22 @@ static void mtk_spi_update_mdata_len(struct spi_master *master) · 5 unmodified lines
570573
571574 if (mdata->tx_sgl_len && mdata->rx_sgl_len) {
572575 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);
574577 mdata->xfer_len = mdata->rx_sgl_len - mult_delta;
575578 mdata->rx_sgl_len = mult_delta;
576579 mdata->tx_sgl_len -= mdata->xfer_len;
577580 } 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);
579582 mdata->xfer_len = mdata->tx_sgl_len - mult_delta;
580583 mdata->tx_sgl_len = mult_delta;
581584 mdata->rx_sgl_len -= mdata->xfer_len;
582585 }
583586 } 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);
585588 mdata->xfer_len = mdata->tx_sgl_len - mult_delta;
586589 mdata->tx_sgl_len = mult_delta;
587590 } 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);
589592 mdata->xfer_len = mdata->rx_sgl_len - mult_delta;
590593 mdata->rx_sgl_len = mult_delta;
591594 }
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
434434 u32 div, mbrdiv;
435435
436436 /* 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);
438438
439439 /*
440440 * 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
886886 static DEFINE_RATELIMIT_STATE(rs,
887887 DEFAULT_RATELIMIT_INTERVAL * 10,
888888 1);
889+ ratelimit_set_flags(&rs, RATELIMIT_MSG_ON_RELEASE);
889890 if (__ratelimit(&rs))
890891 dev_dbg_ratelimited(spi->dev, "Communication suspended\n");
891892 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
720720
721721 static void tegra_qspi_deinit_dma(struct tegra_qspi *tqspi)
722722 {
723+ if (!tqspi->soc_data->has_dma)
724+ return;
725+
723726 if (tqspi->tx_dma_buf) {
724727 dma_free_coherent(tqspi->dev, tqspi->dma_buf_size,
725728 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
750753 u32 *dma_buf;
751754 int err;
752755
756+ if (!tqspi->soc_data->has_dma)
757+ return 0;
758+
753759 dma_chan = dma_request_chan(tqspi->dev, "rx");
754760 if (IS_ERR(dma_chan)) {
755761 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
512512 static noinline int add_ra_bio_pages(struct inode *inode,
513513 u64 compressed_end,
514514 struct compressed_bio *cb,
515− unsigned long *pflags)
515+ int *memstall, unsigned long *pflags)
516516 {
517517 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
518518 unsigned long end_index;
@@ -581,8 +581,10 @@ static noinline int add_ra_bio_pages(struct inode *inode, · 62 unmodified lines
581581 continue;
582582 }
583583
584− if (PageWorkingset(page))
584+ if (!*memstall && PageWorkingset(page)) {
585585 psi_memstall_enter(pflags);
586+ *memstall = 1;
587+ }
586588
587589 ret = set_page_extent_mapped(page);
588590 if (ret < 0) {
@@ -670,8 +672,8 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 81 unmodified lines
670672 u64 em_len;
671673 u64 em_start;
672674 struct extent_map *em;
673− /* Initialize to 1 to make skip psi_memstall_leave unless needed */
674− unsigned long pflags = 1;
675+ unsigned long pflags;
676+ int memstall = 0;
675677 blk_status_t ret;
676678 int ret2;
677679 int i;
@@ -727,7 +729,7 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 49 unmodified lines
727729 goto fail;
728730 }
729731
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);
731733
732734 /* include any pages we added in add_ra-bio_pages */
733735 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
807809 }
808810 }
809811
810− if (!pflags)
812+ if (memstall)
811813 psi_memstall_leave(&pflags);
812814
813815 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
113113 }
114114 }
115115
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+ */
121+bool __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+
116132 /*
117133 * safely gets a reference on the root node of a tree. A lock
118134 * 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
37963796 const char *function,
37973797 unsigned int line, int errno, bool first_hit);
37983798
3799+bool __cold abort_should_print_stack(int errno);
3800+
37993801 /*
38003802 * 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.
38023804 */
38033805 #define btrfs_abort_transaction(trans, errno) \
38043806 do { \
@@ -3807,10 +3809,11 @@ do { \ · 2 unmodified lines
38073809 if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED, \
38083810 &((trans)->fs_info->fs_state))) { \
38093811 first = true; \
3810− if ((errno) != -EIO && (errno) != -EROFS) { \
3811− WARN(1, KERN_DEBUG \
3812+ if (WARN(abort_should_print_stack(errno), \
3813+ KERN_DEBUG \
38123814 "BTRFS: Transaction aborted (error %d)\n", \
3813− (errno)); \
3815+ (errno))) { \
3816+ /* Stack trace printed. */ \
38143817 } else { \
38153818 btrfs_debug((trans)->fs_info, \
38163819 "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
25512551 fs_info->dev_root = root;
25522552 }
25532553 /* 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;
25552557
25562558 /*
25572559 * 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
26722672 u8 csum[BTRFS_CSUM_SIZE];
26732673 u32 blocksize;
26742674
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− */
26812675 if (flags & BTRFS_EXTENT_FLAG_DATA) {
26822676 if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK)
26832677 blocksize = map->stripe_len;
26842678 else
2685− blocksize = BTRFS_STRIPE_LEN;
2679+ blocksize = sctx->fs_info->sectorsize;
26862680 spin_lock(&sctx->stat_lock);
26872681 sctx->stat.data_extents_scrubbed++;
26882682 sctx->stat.data_bytes_scrubbed += len;
@@ -3917,7 +3911,6 @@ int scrub_enumerate_chunks(struct scrub_ctx *sctx, · 1228 unmodified lines
39173911
39183912 if (sctx->is_dev_replace && btrfs_is_zoned(fs_info)) {
39193913 if (!test_bit(BLOCK_GROUP_FLAG_TO_COPY, &cache->runtime_flags)) {
3920− spin_unlock(&cache->lock);
39213914 btrfs_put_block_group(cache);
39223915 goto skip;
39233916 }
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
200200
201201 void btrfs_free_dummy_root(struct btrfs_root *root)
202202 {
203− if (!root)
203+ if (IS_ERR_OR_NULL(root))
204204 return;
205205 /* Will be freed by btrfs_free_fs_roots */
206206 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
10111011 rcu_assign_pointer(device->name, name);
10121012 }
10131013
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+
10141026 list_add(&device->dev_list, &fs_devices->devices);
10151027 device->fs_devices = fs_devices;
10161028 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
69186930 static bool dev_args_match_device(const struct btrfs_dev_lookup_args *args,
69196931 const struct btrfs_device *device)
69206932 {
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+ }
69226939
6923− if ((args->devid != (u64)-1) && device->devid != args->devid)
6940+ if (device->devid != args->devid)
69246941 return false;
69256942 if (args->uuid && memcmp(device->uuid, args->uuid, BTRFS_UUID_SIZE) != 0)
69266943 return false;
6927− if (!args->missing)
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;
6944+ return true;
69336945 }
69346946
69356947 /*
@@ -7744,10 +7756,11 @@ error: · 808 unmodified lines
77447756 return ret;
77457757 }
77467758
7747−void btrfs_init_devices_late(struct btrfs_fs_info *fs_info)
7759+int btrfs_init_devices_late(struct btrfs_fs_info *fs_info)
77487760 {
77497761 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices, *seed_devs;
77507762 struct btrfs_device *device;
7763+ int ret = 0;
77517764
77527765 fs_devices->fs_info = fs_info;
77537766
@@ -7756,12 +7769,18 @@ void btrfs_init_devices_late(struct btrfs_fs_info *fs_info) · 2 unmodified lines
77567769 device->fs_info = fs_info;
77577770
77587771 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) {
77607773 device->fs_info = fs_info;
7774+ ret = btrfs_get_dev_zone_info(device, false);
7775+ if (ret)
7776+ break;
7777+ }
77617778
77627779 seed_devs->fs_info = fs_info;
77637780 }
77647781 mutex_unlock(&fs_devices->device_list_mutex);
7782+
7783+ return ret;
77657784 }
77667785
77677786 static 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
671671 void btrfs_dev_stat_inc_and_print(struct btrfs_device *dev, int index);
672672 int btrfs_get_dev_stats(struct btrfs_fs_info *fs_info,
673673 struct btrfs_ioctl_get_dev_stats *stats);
674−void btrfs_init_devices_late(struct btrfs_fs_info *fs_info);
674+int btrfs_init_devices_late(struct btrfs_fs_info *fs_info);
675675 int btrfs_init_dev_stats(struct btrfs_fs_info *fs_info);
676676 int btrfs_run_dev_stats(struct btrfs_trans_handle *trans);
677677 void 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
639639 device->zone_info = NULL;
640640 }
641641
642+struct 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+
674+out:
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+
642682 int btrfs_get_dev_zone(struct btrfs_device *device, u64 pos,
643683 struct blk_zone *zone)
644684 {
fs/btrfs/zoned.h+11−0
@@ -36,6 +36,7 @@ int btrfs_get_dev_zone(struct btrfs_device *device, u64 pos, · 35 unmodified lines
3636 int btrfs_get_dev_zone_info_all_devices(struct btrfs_fs_info *fs_info);
3737 int btrfs_get_dev_zone_info(struct btrfs_device *device, bool populate_cache);
3838 void btrfs_destroy_dev_zone_info(struct btrfs_device *device);
39+struct btrfs_zoned_device_info *btrfs_clone_dev_zone_info(struct btrfs_device *orig_dev);
3940 int btrfs_check_zoned_mode(struct btrfs_fs_info *fs_info);
4041 int btrfs_check_mountopts_zoned(struct btrfs_fs_info *info);
4142 int 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
103104
104105 static inline void btrfs_destroy_dev_zone_info(struct btrfs_device *device) { }
105106
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+ */
111+static inline struct btrfs_zoned_device_info *btrfs_clone_dev_zone_info(
112+ struct btrfs_device *orig_dev)
113+{
114+ return NULL;
115+}
116+
106117 static inline int btrfs_check_zoned_mode(const struct btrfs_fs_info *fs_info)
107118 {
108119 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
14121412 struct block_device *last_bdev;
14131413 unsigned int nr_bios = 0;
14141414 struct bio *bio = NULL;
1415− /* initialize to 1 to make skip psi_memstall_leave unless needed */
1416− unsigned long pflags = 1;
1415+ unsigned long pflags;
1416+ int memstall = 0;
14171417
14181418 bi_private = jobqueueset_init(sb, q, fgq, force_fg);
14191419 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
14631463 if (bio && (cur != last_index + 1 ||
14641464 last_bdev != mdev.m_bdev)) {
14651465 submit_bio_retry:
1466− if (!pflags)
1467− psi_memstall_leave(&pflags);
14681466 submit_bio(bio);
1467+ if (memstall) {
1468+ psi_memstall_leave(&pflags);
1469+ memstall = 0;
1470+ }
14691471 bio = NULL;
14701472 }
14711473
1472− if (unlikely(PageWorkingset(page)))
1474+ if (unlikely(PageWorkingset(page)) && !memstall) {
14731475 psi_memstall_enter(&pflags);
1476+ memstall = 1;
1477+ }
14741478
14751479 if (!bio) {
14761480 bio = bio_alloc(mdev.m_bdev, BIO_MAX_VECS,
@@ -1500,9 +1504,9 @@ submit_bio_retry: · 23 unmodified lines
15001504 } while (owned_head != Z_EROFS_PCLUSTER_TAIL);
15011505
15021506 if (bio) {
1503− if (!pflags)
1504− psi_memstall_leave(&pflags);
15051507 submit_bio(bio);
1508+ if (memstall)
1509+ psi_memstall_leave(&pflags);
15061510 }
15071511
15081512 /*
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
328328 } else {
329329 unlock_page(page);
330330
331+ if (PageHWPoison(page)) {
332+ put_page(page);
333+ retval = -EIO;
334+ break;
335+ }
336+
331337 /*
332338 * We have the page, copy it to user space buffer.
333339 */
@@ -1111,13 +1117,6 @@ static int hugetlbfs_migrate_folio(struct address_space *mapping, · 777 unmodified lines
11111117 static int hugetlbfs_error_remove_page(struct address_space *mapping,
11121118 struct page *page)
11131119 {
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−
11211120 return 0;
11221121 }
11231122
fs/nfsd/filecache.c+1−0
@@ -1076,6 +1076,7 @@ retry: · 1075 unmodified lines
10761076 goto open_file;
10771077
10781078 nfsd_file_slab_free(&nf->nf_rcu);
1079+ nf = NULL;
10791080 if (ret == -EEXIST)
10801081 goto retry;
10811082 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
53825382 if (err)
53835383 return -EAGAIN;
53845384
5385+ exp_put(exp);
53855386 dput(child);
53865387 if (child != file_dentry(fp->fi_deleg_file->nf_file))
53875388 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
317317 struct the_nilfs *nilfs = sb->s_fs_info;
318318 struct nilfs_sc_info *sci = nilfs->ns_writer;
319319
320− if (!sci || !sci->sc_flush_request)
320+ if (sb_rdonly(sb) || unlikely(!sci) || !sci->sc_flush_request)
321321 return;
322322
323323 set_bit(NILFS_SC_PRIOR_FLUSH, &sci->sc_flags);
@@ -2242,7 +2242,7 @@ int nilfs_construct_segment(struct super_block *sb) · 1918 unmodified lines
22422242 struct nilfs_sc_info *sci = nilfs->ns_writer;
22432243 struct nilfs_transaction_info *ti;
22442244
2245− if (!sci)
2245+ if (sb_rdonly(sb) || unlikely(!sci))
22462246 return -EROFS;
22472247
22482248 /* 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
22802280 struct nilfs_transaction_info ti;
22812281 int err = 0;
22822282
2283− if (!sci)
2283+ if (sb_rdonly(sb) || unlikely(!sci))
22842284 return -EROFS;
22852285
22862286 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
27762776
27772777 if (nilfs->ns_writer) {
27782778 /*
2779− * This happens if the filesystem was remounted
2780− * read/write after nilfs_error degenerated it into a
2781− * read-only mount.
2779+ * This happens if the filesystem is made read-only by
2780+ * __nilfs_error or nilfs_remount and then remounted
2781+ * read/write. In these cases, reuse the existing
2782+ * writer.
27822783 */
2783− nilfs_detach_log_writer(sb);
2784+ return 0;
27842785 }
27852786
27862787 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
11331133 if ((bool)(*flags & SB_RDONLY) == sb_rdonly(sb))
11341134 goto out;
11351135 if (*flags & SB_RDONLY) {
1136− /* Shutting down log writer */
1137− nilfs_detach_log_writer(sb);
11381136 sb->s_flags |= SB_RDONLY;
11391137
11401138 /*
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
690690 {
691691 unsigned long ncleansegs;
692692
693− down_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem);
694693 ncleansegs = nilfs_sufile_get_ncleansegs(nilfs->ns_sufile);
695− up_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem);
696694 *nblocks = (sector_t)ncleansegs * nilfs->ns_blocks_per_segment;
697695 return 0;
698696 }
fs/udf/namei.c+1−1
@@ -240,7 +240,7 @@ static struct fileIdentDesc *udf_find_entry(struct inode *dir, · 239 unmodified lines
240240 poffset - lfi);
241241 else {
242242 if (!copy_name) {
243− copy_name = kmalloc(UDF_NAME_LEN,
243+ copy_name = kmalloc(UDF_NAME_LEN_CS0,
244244 GFP_NOFS);
245245 if (!copy_name) {
246246 fi = ERR_PTR(-ENOMEM);
fs/userfaultfd.c+3−0
@@ -1630,17 +1630,20 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx, · 1629 unmodified lines
16301630 NULL_VM_UFFD_CTX, anon_vma_name(vma));
16311631 if (prev) {
16321632 vma = prev;
1633+ mas_pause(&mas);
16331634 goto next;
16341635 }
16351636 if (vma->vm_start < start) {
16361637 ret = split_vma(mm, vma, start, 1);
16371638 if (ret)
16381639 break;
1640+ mas_pause(&mas);
16391641 }
16401642 if (vma->vm_end > end) {
16411643 ret = split_vma(mm, vma, end, 0);
16421644 if (ret)
16431645 break;
1646+ mas_pause(&mas);
16441647 }
16451648 next:
16461649 /*
include/asm-generic/hyperv-tlfs.h+9−0
@@ -102,6 +102,15 @@ struct ms_hyperv_tsc_page { · 101 unmodified lines
102102 volatile s64 tsc_offset;
103103 } __packed;
104104
105+union 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+
105114 /*
106115 * The guest OS needs to register the guest ID with the hypervisor.
107116 * 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
347347 #define DATA_DATA \
348348 *(.xiptext) \
349349 *(DATA_MAIN) \
350+ *(.data..decrypted) \
350351 *(.ref.data) \
351352 *(.data..shared_aligned) /* percpu related */ \
352353 MEM_KEEP(init.data*) \
@@ -995,7 +996,6 @@ · 642 unmodified lines
995996 #ifdef CONFIG_AMD_MEM_ENCRYPT
996997 #define PERCPU_DECRYPTED_SECTION \
997998 . = ALIGN(PAGE_SIZE); \
998− *(.data..decrypted) \
999999 *(.data..percpu..decrypted) \
10001000 . = ALIGN(PAGE_SIZE);
10011001 #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
152152 return (mtu >= CANXL_MIN_MTU && mtu <= CANXL_MAX_MTU);
153153 }
154154
155+/* drop skb if it does not contain a valid CAN frame for sending */
156+static 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+
155171 void can_setup(struct net_device *dev);
156172
157173 struct 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
389389 #define EFI_LOAD_FILE2_PROTOCOL_GUID EFI_GUID(0x4006c0c1, 0xfcb3, 0x403e, 0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d)
390390 #define EFI_RT_PROPERTIES_TABLE_GUID EFI_GUID(0xeb66918a, 0x7eef, 0x402a, 0x84, 0x2e, 0x93, 0x1d, 0x21, 0xc3, 0x8a, 0xe9)
391391 #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)
392393
393394 #define EFI_IMAGE_SECURITY_DATABASE_GUID EFI_GUID(0xd719b2cb, 0x3d3a, 0x4596, 0xa3, 0xbc, 0xda, 0xd0, 0x0e, 0x67, 0x65, 0x6f)
394395 #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
638638 }
639639 }
640640
641+static 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+
641647 void *mt_find(struct maple_tree *mt, unsigned long *index, unsigned long max);
642648 void *mt_find_after(struct maple_tree *mt, unsigned long *index,
643649 unsigned long max);
@@ -664,6 +670,7 @@ extern atomic_t maple_tree_tests_passed; · 20 unmodified lines
664670
665671 void mt_dump(const struct maple_tree *mt);
666672 void mt_validate(struct maple_tree *mt);
673+void mt_cache_shrink(void);
667674 #define MT_BUG_ON(__tree, __x) do { \
668675 atomic_inc(&maple_tree_tests_run); \
669676 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
376376 }
377377
378378 struct sk_psock *sk_psock_init(struct sock *sk, int node);
379−void sk_psock_stop(struct sk_psock *psock, bool wait);
379+void sk_psock_stop(struct sk_psock *psock);
380380
381381 #if IS_ENABLED(CONFIG_BPF_STREAM_PARSER)
382382 int 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
470470 void *kmem_cache_alloc_node(struct kmem_cache *s, gfp_t flags, int node) __assume_slab_alignment
471471 __malloc;
472472
473−#ifdef CONFIG_TRACING
474473 void *kmalloc_trace(struct kmem_cache *s, gfp_t flags, size_t size)
475474 __assume_kmalloc_alignment __alloc_size(3);
476475
477476 void *kmalloc_node_trace(struct kmem_cache *s, gfp_t gfpflags,
478477 int node, size_t size) __assume_kmalloc_alignment
479478 __alloc_size(4);
480−#else /* CONFIG_TRACING */
481−/* Save a function call when CONFIG_TRACING=n */
482−static __always_inline __alloc_size(3)
483−void *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−
491−static __always_inline __alloc_size(4)
492−void *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−
502479 void *kmalloc_large(size_t size, gfp_t flags) __assume_page_alignment
503480 __alloc_size(1);
504481
include/uapi/drm/panfrost_drm.h+1−1
@@ -254,7 +254,7 @@ struct panfrost_dump_object_header { · 253 unmodified lines
254254 __u64 nbos;
255255 } reghdr;
256256
257− struct pan_bomap_hdr {
257+ struct {
258258 __u32 valid;
259259 __u64 iova;
260260 __u32 data[2];
include/uapi/linux/audit.h+1−1
@@ -187,7 +187,7 @@ · 186 unmodified lines
187187 #define AUDIT_MAX_KEY_LEN 256
188188 #define AUDIT_BITMASK_SIZE 64
189189 #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))
191191
192192 #define AUDIT_SYSCALL_CLASSES 16
193193 #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
426426 */
427427
428428 #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 */
430430
431431
432432 #endif /* _UAPI_LINUX_CAPABILITY_H */
include/uapi/linux/idxd.h+1−0
@@ -29,6 +29,7 @@ enum idxd_scmd_stat { · 28 unmodified lines
2929 IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,
3030 IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
3131 IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
32+ IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
3233 };
3334
3435 #define IDXD_SCMD_SOFTERR_MASK 0x80000000
include/uapi/linux/in.h+1−0
@@ -20,6 +20,7 @@ · 19 unmodified lines
2020 #define _UAPI_LINUX_IN_H
2121
2222 #include <linux/types.h>
23+#include <linux/stddef.h>
2324 #include <linux/libc-compat.h>
2425 #include <linux/socket.h>
2526
include/uapi/linux/io_uring.h+1−1
@@ -222,7 +222,7 @@ enum io_uring_op { · 221 unmodified lines
222222
223223 /*
224224 * sqe->uring_cmd_flags
225− * IORING_URING_CMD_FIXED use registered buffer; pass thig flag
225+ * IORING_URING_CMD_FIXED use registered buffer; pass this flag
226226 * along with setting sqe->buf_index.
227227 */
228228 #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
176176 return ctx->cached_cq_tail - READ_ONCE(ctx->rings->cq.head);
177177 }
178178
179+static 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+
179184 static bool io_match_linked(struct io_kiocb *head)
180185 {
181186 struct io_kiocb *req;
@@ -2315,7 +2320,7 @@ static inline bool io_has_work(struct io_ring_ctx *ctx) · 2133 unmodified lines
23152320 static inline bool io_should_wake(struct io_wait_queue *iowq)
23162321 {
23172322 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;
23192324
23202325 /*
23212326 * 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
23992404 return ret;
24002405 io_cqring_overflow_flush(ctx);
24012406
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)
24032409 return 0;
24042410 } while (ret > 0);
24052411
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
346346 tmp = READ_ONCE(sqe->off);
347347 if (tmp > USHRT_MAX)
348348 return -E2BIG;
349+ if (tmp + p->nbufs >= USHRT_MAX)
350+ return -EINVAL;
349351 p->bid = tmp;
350352 return 0;
351353 }
io_uring/poll.c+19−12
@@ -116,6 +116,8 @@ static void io_poll_req_insert_locked(struct io_kiocb *req) · 115 unmodified lines
116116 struct io_hash_table *table = &req->ctx->cancel_table_locked;
117117 u32 index = hash_long(req->cqe.user_data, table->hash_bits);
118118
119+ lockdep_assert_held(&req->ctx->uring_lock);
120+
119121 hlist_add_head(&req->hash_node, &table->hbs[index].list);
120122 }
121123
@@ -394,7 +396,8 @@ static int io_poll_wake(struct wait_queue_entry *wait, unsigned mode, int sync, · 272 unmodified lines
394396 return 1;
395397 }
396398
397−static void io_poll_double_prepare(struct io_kiocb *req)
399+/* fails only when polling is already completing by the first entry */
400+static bool io_poll_double_prepare(struct io_kiocb *req)
398401 {
399402 struct wait_queue_head *head;
400403 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
403406 rcu_read_lock();
404407 head = smp_load_acquire(&poll->head);
405408 /*
406− * poll arm may not hold ownership and so race with
407− * io_poll_wake() by modifying req->flags. There is only one
408− * poll entry queued, serialise with it by taking its head lock.
409+ * poll arm might not hold ownership and so race for req->flags with
410+ * io_poll_wake(). There is only one poll entry queued, serialise with
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.
409413 */
410− if (head)
414+ if (head) {
411415 spin_lock_irq(&head->lock);
412−
413− req->flags |= REQ_F_DOUBLE_POLL;
414− if (req->opcode == IORING_OP_POLL_ADD)
415− req->flags |= REQ_F_ASYNC_DATA;
416−
417− if (head)
416+ req->flags |= REQ_F_DOUBLE_POLL;
417+ if (req->opcode == IORING_OP_POLL_ADD)
418+ req->flags |= REQ_F_ASYNC_DATA;
418419 spin_unlock_irq(&head->lock);
420+ }
419421 rcu_read_unlock();
422+ return !!head;
420423 }
421424
422425 static 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
454457 /* mark as double wq entry */
455458 wqe_private |= IO_WQE_F_DOUBLE;
456459 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+ }
458465 *poll_ptr = poll;
459466 } else {
460467 /* 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
10271027 */
10281028 static void *realloc_array(void *arr, size_t old_n, size_t new_n, size_t size)
10291029 {
1030+ void *new_arr;
1031+
10301032 if (!new_n || old_n == new_n)
10311033 goto out;
10321034
1033− arr = krealloc_array(arr, new_n, size, GFP_KERNEL);
1034− if (!arr)
1035+ new_arr = krealloc_array(arr, new_n, size, GFP_KERNEL);
1036+ if (!new_arr) {
1037+ kfree(arr);
10351038 return NULL;
1039+ }
1040+ arr = new_arr;
10361041
10371042 if (new_n > old_n)
10381043 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
66186623 return err;
66196624
66206625 bpf_for_each_reg_in_vstate(env->cur_state, state, reg, ({
6621− if (reg->ref_obj_id == ref_obj_id)
6622− __mark_reg_unknown(env, reg);
6626+ if (reg->ref_obj_id == ref_obj_id) {
6627+ if (!env->allow_ptr_leaks)
6628+ __mark_reg_not_init(env, reg);
6629+ else
6630+ __mark_reg_unknown(env, reg);
6631+ }
66236632 }));
66246633
66256634 return 0;
lib/Kconfig.debug+5−1
@@ -395,12 +395,12 @@ endif # DEBUG_INFO · 394 unmodified lines
395395 config FRAME_WARN
396396 int "Warn for stack frames larger than"
397397 range 0 8192
398+ default 0 if KMSAN
398399 default 2048 if GCC_PLUGIN_LATENT_ENTROPY
399400 default 2048 if PARISC
400401 default 1536 if (!64BIT && XTENSA)
401402 default 1024 if !64BIT
402403 default 2048 if 64BIT
403− default 0 if KMSAN
404404 help
405405 Tell the compiler to warn at build time for stack frames larger than this.
406406 Setting this too low will cause a lot of warnings.
@@ -2241,6 +2241,10 @@ config TEST_UUID · 1834 unmodified lines
22412241 config TEST_XARRAY
22422242 tristate "Test the XArray code at runtime"
22432243
2244+config TEST_MAPLE_TREE
2245+ select DEBUG_MAPLE_TREE
2246+ tristate "Test the Maple Tree code at runtime"
2247+
22442248 config TEST_RHASHTABLE
22452249 tristate "Perform selftest on resizable hash table"
22462250 help
lib/Kconfig.kmsan+1−0
@@ -12,6 +12,7 @@ config KMSAN · 11 unmodified lines
1212 bool "KMSAN: detector of uninitialized values use"
1313 depends on HAVE_ARCH_KMSAN && HAVE_KMSAN_COMPILER
1414 depends on SLUB && DEBUG_KERNEL && !KASAN && !KCSAN
15+ depends on !PREEMPT_RT
1516 select STACKDEPOT
1617 select STACKDEPOT_ALWAYS_INIT
1718 help
lib/Makefile+1−0
@@ -85,6 +85,7 @@ obj-$(CONFIG_TEST_BITMAP) += test_bitmap.o · 84 unmodified lines
8585 obj-$(CONFIG_TEST_STRSCPY) += test_strscpy.o
8686 obj-$(CONFIG_TEST_UUID) += test_uuid.o
8787 obj-$(CONFIG_TEST_XARRAY) += test_xarray.o
88+obj-$(CONFIG_TEST_MAPLE_TREE) += test_maple_tree.o
8889 obj-$(CONFIG_TEST_PARMAN) += test_parman.o
8990 obj-$(CONFIG_TEST_KMOD) += test_kmod.o
9091 obj-$(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
183183 call_rcu(&node->rcu, mt_free_rcu);
184184 }
185185
186−static unsigned int mt_height(const struct maple_tree *mt)
187−{
188− return (mt->ma_flags & MT_FLAGS_HEIGHT_MASK) >> MT_FLAGS_HEIGHT_OFFSET;
189−}
190186
191187 static void mas_set_height(struct ma_state *mas)
192188 {
@@ -1209,7 +1205,6 @@ done: · 1016 unmodified lines
12091205 static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp)
12101206 {
12111207 struct maple_alloc *node;
1212− struct maple_alloc **nodep = &mas->alloc;
12131208 unsigned long allocated = mas_allocated(mas);
12141209 unsigned long success = allocated;
12151210 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
12631258 node->node_count--;
12641259
12651260 success += count;
1266− nodep = &node->slot[0];
1267− node = *nodep;
1261+ node = node->slot[0];
12681262 requested -= count;
12691263 }
12701264 mas->alloc->total = success;
@@ -1357,6 +1351,7 @@ static inline struct maple_enode *mas_start(struct ma_state *mas) · 86 unmodified lines
13571351 root = mas_root(mas);
13581352 /* Tree with nodes */
13591353 if (likely(xa_is_node(root))) {
1354+ mas->depth = 1;
13601355 mas->node = mte_safe_root(root);
13611356 return NULL;
13621357 }
@@ -3608,8 +3603,7 @@ static inline int mas_commit_b_node(struct ma_wr_state *wr_mas, · 2245 unmodified lines
36083603 node = mas_pop_node(wr_mas->mas);
36093604 node->parent = mas_mn(wr_mas->mas)->parent;
36103605 wr_mas->mas->node = mt_mk_node(node, b_type);
3611− mab_mas_cp(b_node, 0, b_end, wr_mas->mas, true);
3612−
3606+ mab_mas_cp(b_node, 0, b_end, wr_mas->mas, false);
36133607 mas_replace(wr_mas->mas, false);
36143608 reuse_node:
36153609 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
37333727
37343728 static inline void mas_wr_walk_descend(struct ma_wr_state *wr_mas)
37353729 {
3736− wr_mas->mas->depth++;
37373730 wr_mas->type = mte_node_type(wr_mas->mas->node);
37383731 mas_wr_node_walk(wr_mas);
37393732 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
37453738 wr_mas->mas->min = wr_mas->r_min;
37463739 wr_mas->mas->node = wr_mas->content;
37473740 wr_mas->mas->offset = 0;
3741+ wr_mas->mas->depth++;
37483742 }
37493743 /*
37503744 * 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
49704964 {
49714965 enum maple_type type = mte_node_type(mas->node);
49724966 unsigned long pivot, min, gap = 0;
4973− unsigned char count, offset;
4974− unsigned long *gaps = NULL, *pivots = ma_pivots(mas_mn(mas), type);
4967+ unsigned char offset;
4968+ unsigned long *gaps;
4969+ unsigned long *pivots = ma_pivots(mas_mn(mas), type);
49754970 void __rcu **slots = ma_slots(mas_mn(mas), type);
49764971 bool found = false;
49774972
@@ -4982,9 +4977,8 @@ static inline bool mas_anode_descend(struct ma_state *mas, unsigned long size) · 4 unmodified lines
49824977
49834978 gaps = ma_gaps(mte_to_node(mas->node), type);
49844979 offset = mas->offset;
4985− count = mt_slots[type];
49864980 min = mas_safe_min(mas, pivots, offset);
4987− for (; offset < count; offset++) {
4981+ for (; offset < mt_slots[type]; offset++) {
49884982 pivot = mas_safe_pivot(mas, pivots, offset, type);
49894983 if (offset && !pivot)
49904984 break;
@@ -5010,8 +5004,6 @@ static inline bool mas_anode_descend(struct ma_state *mas, unsigned long size) · 19 unmodified lines
50105004 mas->min = min;
50115005 mas->max = pivot;
50125006 offset = 0;
5013− type = mte_node_type(mas->node);
5014− count = mt_slots[type];
50155007 break;
50165008 }
50175009 }
@@ -5065,6 +5057,7 @@ retry: · 47 unmodified lines
50655057
50665058 return entry;
50675059 }
5060+EXPORT_SYMBOL_GPL(mas_walk);
50685061
50695062 static inline bool mas_rewind_node(struct ma_state *mas)
50705063 {
@@ -5276,6 +5269,7 @@ int mas_empty_area(struct ma_state *mas, unsigned long min, · 205 unmodified lines
52765269 mas->last = mas->index + size - 1;
52775270 return 0;
52785271 }
5272+EXPORT_SYMBOL_GPL(mas_empty_area);
52795273
52805274 /*
52815275 * 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
53395333 mas->index = mas->last - size + 1;
53405334 return 0;
53415335 }
5336+EXPORT_SYMBOL_GPL(mas_empty_area_rev);
53425337
53435338 static inline int mas_alloc(struct ma_state *mas, void *entry,
53445339 unsigned long size, unsigned long *index)
@@ -5660,6 +5655,7 @@ void *mas_store(struct ma_state *mas, void *entry) · 315 unmodified lines
56605655 mas_wr_store_entry(&wr_mas);
56615656 return wr_mas.content;
56625657 }
5658+EXPORT_SYMBOL_GPL(mas_store);
56635659
56645660 /**
56655661 * mas_store_gfp() - Store a value into the tree.
@@ -5686,6 +5682,7 @@ retry: · 20 unmodified lines
56865682
56875683 return 0;
56885684 }
5685+EXPORT_SYMBOL_GPL(mas_store_gfp);
56895686
56905687 /**
56915688 * 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
57035700 BUG_ON(mas_is_err(mas));
57045701 mas_destroy(mas);
57055702 }
5703+EXPORT_SYMBOL_GPL(mas_store_prealloc);
57065704
57075705 /**
57085706 * mas_preallocate() - Preallocate enough nodes for a store operation
@@ -5772,6 +5770,7 @@ void mas_destroy(struct ma_state *mas) · 63 unmodified lines
57725770 }
57735771 mas->alloc = NULL;
57745772 }
5773+EXPORT_SYMBOL_GPL(mas_destroy);
57755774
57765775 /*
57775776 * 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
58335832 return ret;
58345833
58355834 }
5835+EXPORT_SYMBOL_GPL(mas_expected_entries);
58365836
58375837 /**
58385838 * mas_next() - Get the next entry.
@@ -6013,6 +6013,7 @@ void *mas_find(struct ma_state *mas, unsigned long max) · 174 unmodified lines
60136013 /* Retries on dead nodes handled by mas_next_entry */
60146014 return mas_next_entry(mas, max);
60156015 }
6016+EXPORT_SYMBOL_GPL(mas_find);
60166017
60176018 /**
60186019 * 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
60596060 /* Retries on dead nodes handled by mas_next_entry */
60606061 return mas_prev_entry(mas, min);
60616062 }
6062−EXPORT_SYMBOL_GPL(mas_find);
6063+EXPORT_SYMBOL_GPL(mas_find_rev);
60636064
60646065 /**
60656066 * 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
65416542 mas_rewalk(mas, index);
65426543 return 1;
65436544 }
6544−#endif /* not defined __KERNEL__ */
65456545
6546+void 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+ */
6558+void mt_cache_shrink(void)
6559+{
6560+ kmem_cache_shrink(maple_node_cache);
6561+
6562+}
6563+EXPORT_SYMBOL_GPL(mt_cache_shrink);
6564+
6565+#endif /* not defined __KERNEL__ */
65466566 /*
65476567 * mas_get_slot() - Get the entry in the maple state node stored at @offset.
65486568 * @mas: The maple state
@@ -6816,6 +6836,7 @@ void mt_dump(const struct maple_tree *mt) · 267 unmodified lines
68166836 else if (entry)
68176837 mt_dump_node(mt, entry, 0, mt_max[mte_node_type(entry)], 0);
68186838 }
6839+EXPORT_SYMBOL_GPL(mt_dump);
68196840
68206841 /*
68216842 * Calculate the maximum gap in a node and check if that's what is reported in
@@ -7126,5 +7147,6 @@ done: · 304 unmodified lines
71267147 rcu_read_unlock();
71277148
71287149 }
7150+EXPORT_SYMBOL_GPL(mt_validate);
71297151
71307152 #endif /* CONFIG_DEBUG_MAPLE_TREE */
lib/test_maple_tree.c+1193−36733
@@ -1,24 +1,35 @@
11 // SPDX-License-Identifier: GPL-2.0+
22 /*
33 * test_maple_tree.c: Test the maple tree API
4− * Copyright (c) 2018 Liam R. Howlett
4+ * Copyright (c) 2018-2022 Oracle Corporation
55 * Author: Liam R. Howlett <Liam.Howlett@Oracle.com>
6+ *
7+ * Any tests that only require the interface of the tree.
68 */
79
810 #include <linux/maple_tree.h>
911 #include <linux/module.h>
10−#include <stdlib.h>
11−#include <time.h>
1212
1313 #define MTREE_ALLOC_MAX 0x2000000000000Ul
14+#ifndef CONFIG_DEBUG_MAPLE_TREE
1415 #define CONFIG_DEBUG_MAPLE_TREE
16+#endif
1517 #define CONFIG_MAPLE_SEARCH
18+#define MAPLE_32BIT (MAPLE_NODE_SLOTS > 31)
19+
1620 /* #define BENCH_SLOT_STORE */
1721 /* #define BENCH_NODE_STORE */
1822 /* #define BENCH_AWALK */
1923 /* #define BENCH_WALK */
2024 /* #define BENCH_MT_FOR_EACH */
2125 /* #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
2233 static
2334 int mtree_insert_index(struct maple_tree *mt, unsigned long index, gfp_t gfp)
2435 {
@@ -65,6 +76,7 @@ static void *mtree_test_erase(struct maple_tree *mt, unsigned long index) · 40 unmodified lines
6576 return mtree_erase(mt, index);
6677 }
6778
79+#if defined(CONFIG_64BIT)
6880 static noinline void check_mtree_alloc_range(struct maple_tree *mt,
6981 unsigned long start, unsigned long end, unsigned long size,
7082 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
98110
99111 MT_BUG_ON(mt, result != expected);
100112 }
113+#endif
101114
102115 static noinline void check_load(struct maple_tree *mt, unsigned long index,
103116 void *ptr)
@@ -150,12 +163,6 @@ static noinline void check_insert(struct maple_tree *mt, unsigned long index, · 46 unmodified lines
150163 MT_BUG_ON(mt, ret != 0);
151164 }
152165
153−static 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−
159166 static noinline void check_dup_insert(struct maple_tree *mt,
160167 unsigned long index, void *ptr)
161168 {
@@ -172,41 +179,6 @@ void check_index_load(struct maple_tree *mt, unsigned long index) · 10 unmodified lines
172179 return check_load(mt, index, xa_mk_value(index & LONG_MAX));
173180 }
174181
175−static 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−
210182 static inline int not_empty(struct maple_node *node)
211183 {
212184 int i;
@@ -221,350 +193,6 @@ static inline int not_empty(struct maple_node *node) · 8 unmodified lines
221193 return 0;
222194 }
223195
224−static 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−}
568196
569197 static noinline void check_rev_seq(struct maple_tree *mt, unsigned long max,
570198 bool verbose)
@@ -588,6 +216,7 @@ static noinline void check_rev_seq(struct maple_tree *mt, unsigned long max, · 17 unmodified lines
588216 }
589217 check_load(mt, max + 1, NULL);
590218
219+#ifndef __KERNEL__
591220 if (verbose) {
592221 rcu_barrier();
593222 mt_dump(mt);
@@ -595,6 +224,7 @@ static noinline void check_rev_seq(struct maple_tree *mt, unsigned long max, · 1 unmodified line
595224 __func__, max, mt_get_alloc_size()/1024, mt_nr_allocated(),
596225 mt_nr_tallocated());
597226 }
227+#endif
598228 }
599229
600230 static 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
614244 MT_BUG_ON(mt, !mt_height(mt));
615245 check_load(mt, i + 1, NULL);
616246 }
247+
248+#ifndef __KERNEL__
617249 if (verbose) {
618250 rcu_barrier();
619251 mt_dump(mt);
@@ -621,6 +253,7 @@ static noinline void check_seq(struct maple_tree *mt, unsigned long max, · 1 unmodified line
621253 max, mt_get_alloc_size()/1024, mt_nr_allocated(),
622254 mt_nr_tallocated());
623255 }
256+#endif
624257 }
625258
626259 static 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
651284 static noinline void check_upper_bound_split(struct maple_tree *mt)
652285 {
653286 unsigned long i, j;
654− unsigned long huge = 4000UL * 1000 * 1000;
287+ unsigned long huge;
655288
656289 MT_BUG_ON(mt, !mtree_empty(mt));
657290
291+ if (MAPLE_32BIT)
292+ huge = 2147483647UL;
293+ else
294+ huge = 4000UL * 1000 * 1000;
295+
658296 i = 4096;
659297 while (i < huge) {
660298 check_insert(mt, i, (void *) i);
@@ -687,6 +325,7 @@ static noinline void check_rev_find(struct maple_tree *mt) · 26 unmodified lines
687325 mtree_store_range(mt, i*10, i*10 + 5,
688326 xa_mk_value(i), GFP_KERNEL);
689327
328+ rcu_read_lock();
690329 mas_set(&mas, 1000);
691330 val = mas_find_rev(&mas, 1000);
692331 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
712351 MT_BUG_ON(mt, val != xa_mk_value(0));
713352 val = mas_find_rev(&mas, 0);
714353 MT_BUG_ON(mt, val != NULL);
354+ rcu_read_unlock();
715355 }
716356
717357 static noinline void check_find(struct maple_tree *mt)
718358 {
719359 unsigned long val = 0;
720− unsigned long count = 20;
360+ unsigned long count;
721361 unsigned long max;
362+ unsigned long top;
722363 unsigned long last = 0, index = 0;
723364 void *entry, *entry2;
724365
@@ -727,6 +368,18 @@ static noinline void check_find(struct maple_tree *mt) · 2 unmodified lines
727368 /* Insert 0. */
728369 MT_BUG_ON(mt, mtree_insert_index(mt, val++, GFP_KERNEL));
729370
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+
730383 for (int i = 0; i <= count; i++) {
731384 if (val != 64)
732385 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
805458 index = 0;
806459 MT_BUG_ON(mt, mtree_insert_index(mt, ULONG_MAX, GFP_KERNEL));
807460 mt_for_each(mt, entry, index, ULONG_MAX) {
808− if (val == 4398046511104)
809− MT_BUG_ON(mt, entry !=
810− xa_mk_value(ULONG_MAX & LONG_MAX));
461+ if (val == top)
462+ MT_BUG_ON(mt, entry != xa_mk_value(LONG_MAX));
811463 else
812464 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+
814472 if (val == 64) /* Skip zero entry. */
815473 val <<= 2;
816474 /* For zero check. */
@@ -842,11 +500,16 @@ static noinline void check_find(struct maple_tree *mt) · 25 unmodified lines
842500 mas_for_each(&mas, entry, ULONG_MAX) {
843501 if (val == 64)
844502 MT_BUG_ON(mt, entry != XA_ZERO_ENTRY);
845− else if (val == 4398046511104)
846− MT_BUG_ON(mt, entry != xa_mk_value(ULONG_MAX & LONG_MAX));
503+ else if (val == top)
504+ MT_BUG_ON(mt, entry != xa_mk_value(LONG_MAX));
847505 else
848506 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;
850513
851514 /* For zero check. */
852515 if (!val)
@@ -951,36548 +614,1350 @@ static noinline void check_find_2(struct maple_tree *mt) · 98 unmodified lines
951614 /*MT_BUG_ON(mt, !mtree_empty(mt)); */
952615 }
953616
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])
958617
959−static noinline void check_erase_testset(struct maple_tree *mt)
618+#if defined(CONFIG_64BIT)
619+static noinline void check_alloc_rev_range(struct maple_tree *mt)
960620 {
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−
1015621 /*
1016− * Set the newly erased node. This will produce a different allocated
1017− * node to avoid busy slots.
622+ * Generated by:
623+ * cat /proc/self/maps | awk '{print $1}'|
624+ * awk -F "-" '{printf "0x%s, 0x%s, ", $1, $2}'
1018625 */
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);
1050626
1051− mt_set_non_kernel(1);
1052− erase_check_erase(mt, 2); /* erase 5017 to check append */
1053− erase_check_load(mt, 0);
1054− check_load(mt, 5016, NULL);
1055− check_load(mt, set[2], NULL);
1056− erase_check_erase(mt, 0); /* erase 5015 to check append */
1057− check_load(mt, set[0], NULL);
1058− check_load(mt, 5016, NULL);
1059− erase_check_insert(mt, 4); /* 1000 < Should not split. */
1060− check_load(mt, set[0], NULL);
1061− check_load(mt, 5016, NULL);
1062− erase_check_load(mt, 1);
1063− check_load(mt, 5013, NULL);
1064− check_load(mt, set[2], NULL);
1065− check_load(mt, 5018, NULL);
1066− erase_check_load(mt, 4);
1067− check_load(mt, 999, NULL);
1068− check_load(mt, 1001, NULL);
1069− erase_check_load(mt, 4);
1070− if (mt_in_rcu(mt))
1071− MT_BUG_ON(mt, root_node == mt->ma_root);
1072− else
1073− MT_BUG_ON(mt, root_node != mt->ma_root);
627+ unsigned long range[] = {
628+ /* Inclusive , Exclusive. */
629+ 0x565234af2000, 0x565234af4000,
630+ 0x565234af4000, 0x565234af9000,
631+ 0x565234af9000, 0x565234afb000,
632+ 0x565234afc000, 0x565234afd000,
633+ 0x565234afd000, 0x565234afe000,
634+ 0x565235def000, 0x565235e10000,
635+ 0x7f36d4bfd000, 0x7f36d4ee2000,
636+ 0x7f36d4ee2000, 0x7f36d4f04000,
637+ 0x7f36d4f04000, 0x7f36d504c000,
638+ 0x7f36d504c000, 0x7f36d5098000,
639+ 0x7f36d5098000, 0x7f36d5099000,
640+ 0x7f36d5099000, 0x7f36d509d000,
641+ 0x7f36d509d000, 0x7f36d509f000,
642+ 0x7f36d509f000, 0x7f36d50a5000,
643+ 0x7f36d50b9000, 0x7f36d50db000,
644+ 0x7f36d50db000, 0x7f36d50dc000,
645+ 0x7f36d50dc000, 0x7f36d50fa000,
646+ 0x7f36d50fa000, 0x7f36d5102000,
647+ 0x7f36d5102000, 0x7f36d5103000,
648+ 0x7f36d5103000, 0x7f36d5104000,
649+ 0x7f36d5104000, 0x7f36d5105000,
650+ 0x7fff5876b000, 0x7fff5878d000,
651+ 0x7fff5878e000, 0x7fff58791000,
652+ 0x7fff58791000, 0x7fff58793000,
653+ };
1074654
1075− /* Should not have split. */
1076− MT_BUG_ON(mt, !mte_is_leaf(mt->ma_root));
655+ unsigned long holes[] = {
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+ };
1077666
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. */
1078681
1079− /* Coalesce testing */
1080− erase_check_insert(mt, 0);
1081− erase_check_insert(mt, 2);
682+ 0x0, /* Min */
683+ 0x565234AF1 << 12, /* Max */
684+ 0x3000, /* Size */
685+ 0x565234AEE << 12, /* max - 3. */
686+ 0, /* Return value success. */
1082687
1083− for (int i = 5; i < 25; i++) {
1084− erase_check_insert(mt, i);
1085− for (int j = i; j >= 0; j--)
1086− erase_check_load(mt, j);
1087− }
688+ 0x0, /* Min */
689+ -1, /* Max */
690+ 0x1000, /* Size */
691+ 562949953421311 << 12,/* First rev hole of size 0x1000 */
692+ 0, /* Return value success. */
1088693
1089− erase_check_erase(mt, 14); /*6015 */
1090− for (int i = 0; i < 25; i++) {
1091− if (i == 14)
1092− check_load(mt, set[i], NULL);
1093− else
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− }
694+ 0x0, /* Min */
695+ 0x7F36D510A << 12, /* Max */
696+ 0x4000, /* Size */
697+ 0x7F36D5106 << 12, /* First rev hole of size 0x4000 */
698+ 0, /* Return value success. */
1103699
700+ /* Ascend test. */
701+ 0x0,
702+ 34148798629 << 12,
703+ 19 << 12,
704+ 34148797418 << 12,
705+ 0x0,
1104706
1105− mt_set_non_kernel(1);
1106− erase_check_erase(mt, 13); /*6012 */
1107− for (int i = 0; i < 25; i++) {
1108− if (i == 16 || i == 14 || i == 13)
1109− check_load(mt, set[i], NULL);
1110− else
1111− erase_check_load(mt, i);
1112− }
707+ /* Too big test. */
708+ 0x0,
709+ 18446744073709551615UL,
710+ 562915594369134UL << 12,
711+ 0x0,
712+ -EBUSY,
1113713
1114− erase_check_erase(mt, 15); /*7003 */
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− }
714+ };
1121715
1122− mt_set_non_kernel(2);
1123− erase_check_erase(mt, 17); /*7008 *should* cause coalesce. */
1124− for (int i = 0; i < 25; i++) {
1125− if (i <= 17 && i >= 13)
1126− check_load(mt, set[i], NULL);
1127− else
1128− erase_check_load(mt, i);
1129− }
716+ int i, range_count = ARRAY_SIZE(range);
717+ int req_range_count = ARRAY_SIZE(req_range);
718+ unsigned long min = 0;
1130719
1131− erase_check_erase(mt, 18); /*7012 */
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− }
720+ MA_STATE(mas, mt, 0, 0);
1138721
1139− mt_set_non_kernel(2);
1140− erase_check_erase(mt, 19); /*7015 */
1141− for (int i = 0; i < 25; i++) {
1142− if (i <= 19 && i >= 13)
1143− check_load(mt, set[i], NULL);
1144− else
1145− erase_check_load(mt, i);
1146− }
722+ mtree_store_range(mt, MTREE_ALLOC_MAX, ULONG_MAX, XA_ZERO_ENTRY,
723+ GFP_KERNEL);
724+#define DEBUG_REV_RANGE 0
725+ for (i = 0; i < range_count; i += 2) {
726+ /* Inclusive, Inclusive (with the -1) */
1147727
1148− erase_check_erase(mt, 20); /*8003 */
1149− for (int i = 0; i < 25; i++) {
1150− if (i <= 20 && i >= 13)
1151− check_load(mt, set[i], NULL);
1152− else
1153− erase_check_load(mt, i);
728+#if DEBUG_REV_RANGE
729+ pr_debug("\t%s: Insert %lu-%lu\n", __func__, range[i] >> 12,
730+ (range[i + 1] >> 12) - 1);
731+#endif
732+ check_insert_range(mt, range[i] >> 12, (range[i + 1] >> 12) - 1,
733+ xa_mk_value(range[i] >> 12), 0);
734+ mt_validate(mt);
1154735 }
1155736
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− }
1163737
1164− mt_set_non_kernel(2);
1165− erase_check_erase(mt, 22); /*8008 */
1166− for (int i = 0; i < 25; i++) {
1167− if (i <= 22 && i >= 13)
1168− check_load(mt, set[i], NULL);
1169− else
1170− erase_check_load(mt, i);
738+ mas_lock(&mas);
739+ for (i = 0; i < ARRAY_SIZE(holes); i += 3) {
740+#if DEBUG_REV_RANGE
741+ pr_debug("Search from %lu-%lu for gap %lu should be at %lu\n",
742+ min, holes[i+1]>>12, holes[i+2]>>12,
743+ holes[i] >> 12);
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);
1171757 }
1172− for (int i = 23; i < 25; i++)
1173− erase_check_erase(mt, i);
1174758
1175− for (int i = 0; i < 25; i++) {
1176− if (i <= 25 && i >= 13)
1177− check_load(mt, set[i], NULL);
1178− else
1179− erase_check_load(mt, i);
759+ mas_unlock(&mas);
760+ for (i = 0; i < req_range_count; i += 5) {
761+#if DEBUG_REV_RANGE
762+ pr_debug("\tReverse request between %lu-%lu size %lu, should get %lu\n",
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);
1180776 }
1181777
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);
1183782
1184− for (int i = 13; i < ARRAY_SIZE(set); i++)
1185− erase_check_insert(mt, i);
783+ mtree_destroy(mt);
784+}
1186785
1187− mt_set_non_kernel(99);
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
1225−void *mas_next(struct ma_state *mas, unsigned long max);
1226−
1227−/* Calculate the overwritten entries. */
1228−int 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− */
1298−static 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;
1343−mas_max:
1344− max = mas->max;
1345−offset_found:
1346− prev++;
1347−offset_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− */
1370−static 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− */
1405−static inline bool mas_tree_walk(struct ma_state *mas, unsigned long *range_min,
1406− unsigned long *range_max)
786+static noinline void check_alloc_range(struct maple_tree *mt)
1407787 {
1408− bool ret;
1409−
1410−retry:
1411− ret = false;
1412− mas_start(mas);
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;
788+ /*
789+ * Generated by:
790+ * cat /proc/self/maps|awk '{print $1}'|
791+ * awk -F "-" '{printf "0x%s, 0x%s, ", $1, $2}'
792+ */
1431793
1432−not_found:
1433− mas->offset = MAPLE_NODE_SLOTS;
1434− return false;
1435−}
794+ unsigned long range[] = {
795+ /* Inclusive , Exclusive. */
796+ 0x565234af2000, 0x565234af4000,
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+ };
1436827
1437−static inline void *mas_range_load(struct ma_state *mas,
1438− unsigned long *range_min, unsigned long *range_max)
828+ /*
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. */
1439842
1440−{
1441− void *entry = NULL;
1442− unsigned long index = mas->index;
843+ 0x0, /* Min */
844+ 0x7fff58791000, /* Max */
845+ 0x1F00, /* Size */
846+ 0x0, /* First hole in our data of size 2000. */
847+ 0, /* Return value success. */
1443848
1444− if (mas_is_none(mas) || mas_is_paused(mas))
1445− mas->node = MAS_START;
1446−retry:
1447− if (mas_tree_walk(mas, range_min, range_max))
1448− if (unlikely(mas->node == MAS_ROOT))
1449− return mas_root(mas);
849+ /* Test ascend. */
850+ 34148797436 << 12, /* Min */
851+ 0x7fff587AF000, /* Max */
852+ 0x3000, /* Size */
853+ 34148798629 << 12, /* Expected location */
854+ 0, /* Return value success. */
1450855
1451− if (likely(mas->offset != MAPLE_NODE_SLOTS))
1452− entry = mas_get_slot(mas, mas->offset);
856+ /* Test failing. */
857+ 34148798623 << 12, /* Min */
858+ 34148798683 << 12, /* Max */
859+ 0x15000, /* Size */
860+ 0, /* Expected location */
861+ -EBUSY, /* Return value failed. */
1453862
1454− if (mas_dead_node(mas, index))
1455− goto retry;
863+ /* Test filling entire gap. */
864+ 34148798623 << 12, /* Min */
865+ 0x7fff587AF000, /* Max */
866+ 0x10000, /* Size */
867+ 34148798632 << 12, /* Expected location */
868+ 0, /* Return value success. */
1456869
1457− return entry;
1458−}
1459−static noinline void check_erase2_testset(struct maple_tree *mt,
1460− unsigned long *set, unsigned long size)
1461−{
1462− int entry_count = 0;
1463− int check = 0;
1464− void *foo;
1465− unsigned long addr = 0;
1466− void *s_entry = NULL, *e_entry = NULL;
870+ /* Test walking off the end of root. */
871+ 0, /* Min */
872+ -1, /* Max */
873+ -1, /* Size */
874+ 0, /* Expected location */
875+ -EBUSY, /* Return value failure. */
1467876
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;
1468887 MA_STATE(mas, mt, 0, 0);
1469888
1470− for (int i = 0; i < size; i += 3) {
1471− unsigned long s_min, s_max;
1472− unsigned long e_min, e_max;
1473− void *value = NULL;
1474−
1475− MA_STATE(mas_start, mt, set[i+1], set[i+1]);
1476− MA_STATE(mas_end, mt, set[i+2], set[i+2]);
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
889+ mtree_store_range(mt, MTREE_ALLOC_MAX, ULONG_MAX, XA_ZERO_ENTRY,
890+ GFP_KERNEL);
891+ for (i = 0; i < range_count; i += 2) {
892+#define DEBUG_ALLOC_RANGE 0
893+#if DEBUG_ALLOC_RANGE
894+ pr_debug("\tInsert %lu-%lu\n", range[i] >> 12,
895+ (range[i + 1] >> 12) - 1);
1544896 mt_dump(mt);
1545897 #endif
1546−#if check_erase2_debug
1547− pr_err("Done\n");
1548−#endif
898+ check_insert_range(mt, range[i] >> 12, (range[i + 1] >> 12) - 1,
899+ xa_mk_value(range[i] >> 12), 0);
900+ mt_validate(mt);
901+ }
1549902
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− }
1560903
1561−#if check_erase2_debug > 2
1562− pr_err("mt_for_each %d and count %d\n", check, entry_count);
1563−#endif
1564904
1565− MT_BUG_ON(mt, check != entry_count);
905+ mas_lock(&mas);
906+ for (i = 0; i < ARRAY_SIZE(holes); i += 3) {
1566907
1567− check = 0;
1568− addr = 0;
908+#if DEBUG_ALLOC_RANGE
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];
1569918 mas_reset(&mas);
1570− mas.index = 0;
1571− rcu_read_lock();
1572− mas_for_each(&mas, foo, ULONG_MAX) {
1573− if (xa_is_zero(foo)) {
1574− if (addr == mas.index) {
1575− mt_dump(mas.tree);
1576− pr_err("retry failed %lu - %lu\n",
1577− mas.index, mas.last);
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);
919+ }
920+ mas_unlock(&mas);
921+ for (i = 0; i < req_range_count; i += 5) {
922+#if DEBUG_ALLOC_RANGE
923+ pr_debug("\tTest %d: %lu-%lu size %lu expected %lu (%lu-%lu)\n",
924+ i/5, req_range[i] >> 12, req_range[i + 1] >> 12,
925+ req_range[i + 2] >> 12, req_range[i + 3] >> 12,
926+ req_range[i], req_range[i+1]);
1585927 #endif
1586− check++;
1587− if (check > entry_count)
1588− break;
1589− }
1590− rcu_read_unlock();
1591−#if check_erase2_debug > 2
1592− pr_err("mas_for_each %d and count %d\n", check, entry_count);
928+ check_mtree_alloc_range(mt,
929+ req_range[i] >> 12, /* start */
930+ req_range[i+1] >> 12, /* end */
931+ req_range[i+2] >> 12, /* size */
932+ req_range[i+3] >> 12, /* expected address */
933+ req_range[i+4], /* expected return */
934+ xa_mk_value(req_range[i] >> 12)); /* pointer */
1593935 mt_validate(mt);
936+#if DEBUG_ALLOC_RANGE
937+ mt_dump(mt);
1594938 #endif
1595−
1596− MT_BUG_ON(mt, check != entry_count);
1597−
1598− MT_BUG_ON(mt, mtree_load(mas.tree, 0) != NULL);
1599939 }
1600−}
1601940
941+ mtree_destroy(mt);
942+}
943+#endif
1602944
1603−/* These tests were pulled from kvm tests. */
1604−static noinline void check_erase2_sets(struct maple_tree *mt)
945+static noinline void check_ranges(struct maple_tree *mt)
1605946 {
1606− void *entry;
1607− unsigned long start = 0;
1608− unsigned long set[] = {
1609−STORE, 140737488347136, 140737488351231,
1610−STORE, 140721266458624, 140737488351231,
1611−ERASE, 140721266458624, 140737488351231,
1612−STORE, 140721266458624, 140721266462719,
1613−STORE, 94735788949504, 94735789121535,
1614−ERASE, 94735788949504, 94735789121535,
1615−STORE, 94735788949504, 94735788965887,
1616−STORE, 94735788965888, 94735789121535,
1617−ERASE, 94735788965888, 94735789121535,
1618−STORE, 94735788965888, 94735789068287,
1619−STORE, 94735789068288, 94735789109247,
1620−STORE, 94735789109248, 94735789121535,
1621−STORE, 140253902692352, 140253902864383,
1622−ERASE, 140253902692352, 140253902864383,
1623−STORE, 140253902692352, 140253902696447,
1624−STORE, 140253902696448, 140253902864383,
1625− };
1626− unsigned long set2[] = {
1627−STORE, 140737488347136, 140737488351231,
1628−STORE, 140735933583360, 140737488351231,
1629−ERASE, 140735933583360, 140737488351231,
1630−STORE, 140735933583360, 140735933587455,
1631−STORE, 94811003260928, 94811003432959,
1632−ERASE, 94811003260928, 94811003432959,
1633−STORE, 94811003260928, 94811003277311,
1634−STORE, 94811003277312, 94811003432959,
1635−ERASE, 94811003277312, 94811003432959,
1636−STORE, 94811003277312, 94811003379711,
1637−STORE, 94811003379712, 94811003420671,
1638−STORE, 94811003420672, 94811003432959,
1639−STORE, 140277094653952, 140277094825983,
1640−ERASE, 140277094653952, 140277094825983,
1641−STORE, 140277094653952, 140277094658047,
1642−STORE, 140277094658048, 140277094825983,
1643−ERASE, 140277094658048, 140277094825983,
1644−STORE, 140277094658048, 140277094780927,
1645−STORE, 140277094780928, 140277094813695,
1646−STORE, 140277094813696, 140277094821887,
1647−STORE, 140277094821888, 140277094825983,
1648−STORE, 140735933906944, 140735933911039,
1649− };
1650− unsigned long set3[] = {
1651−STORE, 140737488347136, 140737488351231,
1652−STORE, 140735790264320, 140737488351231,
1653−ERASE, 140735790264320, 140737488351231,
1654−STORE, 140735790264320, 140735790268415,
1655−STORE, 94016597282816, 94016597454847,
1656−ERASE, 94016597282816, 94016597454847,
1657−STORE, 94016597282816, 94016597299199,
1658−STORE, 94016597299200, 94016597454847,
1659−ERASE, 94016597299200, 94016597454847,
1660−STORE, 94016597299200, 94016597401599,
1661−STORE, 94016597401600, 94016597442559,
1662−STORE, 94016597442560, 94016597454847,
1663−STORE, 140496959283200, 140496959455231,
1664−ERASE, 140496959283200, 140496959455231,
1665−STORE, 140496959283200, 140496959287295,
1666−STORE, 140496959287296, 140496959455231,
1667−ERASE, 140496959287296, 140496959455231,
1668−STORE, 140496959287296, 140496959410175,
1669−STORE, 140496959410176, 140496959442943,
1670−STORE, 140496959442944, 140496959451135,
1671−STORE, 140496959451136, 140496959455231,
1672−STORE, 140735791718400, 140735791722495,
1673−STORE, 140735791706112, 140735791718399,
1674−STORE, 47135835713536, 47135835721727,
1675−STORE, 47135835721728, 47135835729919,
1676−STORE, 47135835729920, 47135835893759,
1677−ERASE, 47135835729920, 47135835893759,
1678−STORE, 47135835729920, 47135835742207,
1679−STORE, 47135835742208, 47135835893759,
1680−STORE, 47135835840512, 47135835893759,
1681−STORE, 47135835742208, 47135835840511,
1682−ERASE, 47135835742208, 47135835840511,
1683−STORE, 47135835742208, 47135835840511,
1684−STORE, 47135835885568, 47135835893759,
1685−STORE, 47135835840512, 47135835885567,
1686−ERASE, 47135835840512, 47135835885567,
1687−STORE, 47135835840512, 47135835893759,
1688−ERASE, 47135835840512, 47135835893759,
1689−STORE, 47135835840512, 47135835885567,
1690−STORE, 47135835885568, 47135835893759,
1691− };
1692−
1693− unsigned long set4[] = {
1694−STORE, 140737488347136, 140737488351231,
1695−STORE, 140728251703296, 140737488351231,
1696−ERASE, 140728251703296, 140737488351231,
1697−STORE, 140728251703296, 140728251707391,
1698−STORE, 94668429205504, 94668429377535,
1699−ERASE, 94668429205504, 94668429377535,
1700−STORE, 94668429205504, 94668429221887,
1701−STORE, 94668429221888, 94668429377535,
1702−ERASE, 94668429221888, 94668429377535,
1703−STORE, 94668429221888, 94668429324287,
1704−STORE, 94668429324288, 94668429365247,
1705−STORE, 94668429365248, 94668429377535,
1706−STORE, 47646523273216, 47646523445247,
1707−ERASE, 47646523273216, 47646523445247,
1708−STORE, 47646523273216, 47646523277311,
1709−STORE, 47646523277312, 47646523445247,
1710−ERASE, 47646523277312, 47646523445247,
1711−STORE, 47646523277312, 47646523400191,
1712− };
1713−
1714− unsigned long set5[] = {
1715−STORE, 140737488347136, 140737488351231,
1716−STORE, 140726874062848, 140737488351231,
1717−ERASE, 140726874062848, 140737488351231,
1718−STORE, 140726874062848, 140726874066943,
1719−STORE, 94248892870656, 94248893042687,
1720−ERASE, 94248892870656, 94248893042687,
1721−STORE, 94248892870656, 94248892887039,
1722−STORE, 94248892887040, 94248893042687,
1723−ERASE, 94248892887040, 94248893042687,
1724−STORE, 94248892887040, 94248892989439,
1725−STORE, 94248892989440, 94248893030399,
1726−STORE, 94248893030400, 94248893042687,
1727−STORE, 47884786266112, 47884786438143,
1728−ERASE, 47884786266112, 47884786438143,
1729−STORE, 47884786266112, 47884786270207,
1730−STORE, 47884786270208, 47884786438143,
1731−ERASE, 47884786270208, 47884786438143,
1732−STORE, 47884786270208, 47884786393087,
1733−STORE, 47884786393088, 47884786425855,
1734−STORE, 47884786425856, 47884786434047,
1735−STORE, 47884786434048, 47884786438143,
1736−STORE, 140726874513408, 140726874517503,
1737−STORE, 140726874501120, 140726874513407,
1738−STORE, 47884786438144, 47884786446335,
1739−STORE, 47884786446336, 47884786454527,
1740−STORE, 47884786454528, 47884786618367,
1741−ERASE, 47884786454528, 47884786618367,
1742−STORE, 47884786454528, 47884786466815,
1743−STORE, 47884786466816, 47884786618367,
1744−STORE, 47884786565120, 47884786618367,
1745−STORE, 47884786466816, 47884786565119,
1746−ERASE, 47884786466816, 47884786565119,
1747−STORE, 47884786466816, 47884786565119,
1748−STORE, 47884786610176, 47884786618367,
1749−STORE, 47884786565120, 47884786610175,
1750−ERASE, 47884786565120, 47884786610175,
1751−STORE, 47884786565120, 47884786618367,
1752−ERASE, 47884786565120, 47884786618367,
1753−STORE, 47884786565120, 47884786610175,
1754−STORE, 47884786610176, 47884786618367,
1755−ERASE, 47884786610176, 47884786618367,
1756−STORE, 47884786610176, 47884786618367,
1757−STORE, 47884786618368, 47884789669887,
1758−STORE, 47884787163136, 47884789669887,
1759−STORE, 47884786618368, 47884787163135,
1760−ERASE, 47884787163136, 47884789669887,
1761−STORE, 47884787163136, 47884789448703,
1762−STORE, 47884789448704, 47884789669887,
1763−STORE, 47884788858880, 47884789448703,
1764−STORE, 47884787163136, 47884788858879,
1765−ERASE, 47884787163136, 47884788858879,
1766−STORE, 47884787163136, 47884788858879,
1767−STORE, 47884789444608, 47884789448703,
1768−STORE, 47884788858880, 47884789444607,
1769−ERASE, 47884788858880, 47884789444607,
1770−STORE, 47884788858880, 47884789444607,
1771−STORE, 47884789653504, 47884789669887,
1772−STORE, 47884789448704, 47884789653503,
1773−ERASE, 47884789448704, 47884789653503,
1774−STORE, 47884789448704, 47884789653503,
1775−ERASE, 47884789653504, 47884789669887,
1776−STORE, 47884789653504, 47884789669887,
1777−STORE, 47884789669888, 47884791508991,
1778−STORE, 47884789809152, 47884791508991,
1779−STORE, 47884789669888, 47884789809151,
1780−ERASE, 47884789809152, 47884791508991,
1781−STORE, 47884789809152, 47884791468031,
1782−STORE, 47884791468032, 47884791508991,
1783−STORE, 47884791152640, 47884791468031,
1784−STORE, 47884789809152, 47884791152639,
1785−ERASE, 47884789809152, 47884791152639,
1786−STORE, 47884789809152, 47884791152639,
1787−STORE, 47884791463936, 47884791468031,
1788−STORE, 47884791152640, 47884791463935,
1789−ERASE, 47884791152640, 47884791463935,
1790−STORE, 47884791152640, 47884791463935,
1791−STORE, 47884791492608, 47884791508991,
1792−STORE, 47884791468032, 47884791492607,
1793−ERASE, 47884791468032, 47884791492607,
1794−STORE, 47884791468032, 47884791492607,
1795−ERASE, 47884791492608, 47884791508991,
1796−STORE, 47884791492608, 47884791508991,
1797−STORE, 47884791508992, 47884791644159,
1798−ERASE, 47884791508992, 47884791644159,
1799−STORE, 47884791508992, 47884791533567,
1800−STORE, 47884791533568, 47884791644159,
1801−STORE, 47884791595008, 47884791644159,
1802−STORE, 47884791533568, 47884791595007,
1803−ERASE, 47884791533568, 47884791595007,
1804−STORE, 47884791533568, 47884791595007,
1805−STORE, 47884791619584, 47884791644159,
1806−STORE, 47884791595008, 47884791619583,
1807−ERASE, 47884791595008, 47884791619583,
1808−STORE, 47884791595008, 47884791644159,
1809−ERASE, 47884791595008, 47884791644159,
1810−STORE, 47884791595008, 47884791619583,
1811−STORE, 47884791619584, 47884791644159,
1812−STORE, 47884791627776, 47884791644159,
1813−STORE, 47884791619584, 47884791627775,
1814−ERASE, 47884791619584, 47884791627775,
1815−STORE, 47884791619584, 47884791627775,
1816−ERASE, 47884791627776, 47884791644159,
1817−STORE, 47884791627776, 47884791644159,
1818−STORE, 47884791644160, 47884791664639,
1819−ERASE, 47884791644160, 47884791664639,
1820−STORE, 47884791644160, 47884791648255,
1821−STORE, 47884791648256, 47884791664639,
1822−STORE, 47884791652352, 47884791664639,
1823−STORE, 47884791648256, 47884791652351,
1824−ERASE, 47884791648256, 47884791652351,
1825−STORE, 47884791648256, 47884791652351,
1826−STORE, 47884791656448, 47884791664639,
1827−STORE, 47884791652352, 47884791656447,
1828−ERASE, 47884791652352, 47884791656447,
1829−STORE, 47884791652352, 47884791664639,
1830−ERASE, 47884791652352, 47884791664639,
1831−STORE, 47884791652352, 47884791656447,
1832−STORE, 47884791656448, 47884791664639,
1833−ERASE, 47884791656448, 47884791664639,
1834−STORE, 47884791656448, 47884791664639,
1835−STORE, 47884791664640, 47884791672831,
1836−ERASE, 47884791468032, 47884791492607,
1837−STORE, 47884791468032, 47884791484415,
1838−STORE, 47884791484416, 47884791492607,
1839−ERASE, 47884791656448, 47884791664639,
1840−STORE, 47884791656448, 47884791660543,
1841−STORE, 47884791660544, 47884791664639,
1842−ERASE, 47884791619584, 47884791627775,
1843−STORE, 47884791619584, 47884791623679,
1844−STORE, 47884791623680, 47884791627775,
1845− };
947+ int i, val, val2;
948+ unsigned long r[] = {
949+ 10, 15,
950+ 20, 25,
951+ 17, 22, /* Overlaps previous range. */
952+ 9, 1000, /* Huge. */
953+ 100, 200,
954+ 45, 168,
955+ 118, 128,
956+ };
1846957
1847− unsigned long set6[] = {
1848−STORE, 140737488347136, 140737488351231,
1849−STORE, 140722999021568, 140737488351231,
1850−ERASE, 140722999021568, 140737488351231,
1851−STORE, 140722999021568, 140722999025663,
1852−STORE, 94901500268544, 94901500440575,
1853−ERASE, 94901500268544, 94901500440575,
1854−STORE, 94901500268544, 94901500284927,
1855−STORE, 94901500284928, 94901500440575,
1856−ERASE, 94901500284928, 94901500440575,
1857−STORE, 94901500284928, 94901500387327,
1858−STORE, 94901500387328, 94901500428287,
1859−STORE, 94901500428288, 94901500440575,
1860−STORE, 47430426660864, 47430426832895,
1861−ERASE, 47430426660864, 47430426832895,
1862−STORE, 47430426660864, 47430426664959,
1863−STORE, 47430426664960, 47430426832895,
1864−ERASE, 47430426664960, 47430426832895,
1865−STORE, 47430426664960, 47430426787839,
1866−STORE, 47430426787840, 47430426820607,
1867−STORE, 47430426820608, 47430426828799,
1868−STORE, 47430426828800, 47430426832895,
1869−STORE, 140722999115776, 140722999119871,
1870−STORE, 140722999103488, 140722999115775,
1871−STORE, 47430426832896, 47430426841087,
1872−STORE, 47430426841088, 47430426849279,
1873−STORE, 47430426849280, 47430427013119,
1874−ERASE, 47430426849280, 47430427013119,
1875−STORE, 47430426849280, 47430426861567,
1876−STORE, 47430426861568, 47430427013119,
1877−STORE, 47430426959872, 47430427013119,
1878−STORE, 47430426861568, 47430426959871,
1879−ERASE, 47430426861568, 47430426959871,
1880−STORE, 47430426861568, 47430426959871,
1881−STORE, 47430427004928, 47430427013119,
1882−STORE, 47430426959872, 47430427004927,
1883−ERASE, 47430426959872, 47430427004927,
1884−STORE, 47430426959872, 47430427013119,
1885−ERASE, 47430426959872, 47430427013119,
1886−STORE, 47430426959872, 47430427004927,
1887−STORE, 47430427004928, 47430427013119,
1888−ERASE, 47430427004928, 47430427013119,
1889−STORE, 47430427004928, 47430427013119,
1890−STORE, 47430427013120, 47430430064639,
1891−STORE, 47430427557888, 47430430064639,
1892−STORE, 47430427013120, 47430427557887,
1893−ERASE, 47430427557888, 47430430064639,
1894−STORE, 47430427557888, 47430429843455,
1895−STORE, 47430429843456, 47430430064639,
1896−STORE, 47430429253632, 47430429843455,
1897−STORE, 47430427557888, 47430429253631,
1898−ERASE, 47430427557888, 47430429253631,
1899−STORE, 47430427557888, 47430429253631,
1900−STORE, 47430429839360, 47430429843455,
1901−STORE, 47430429253632, 47430429839359,
1902−ERASE, 47430429253632, 47430429839359,
1903−STORE, 47430429253632, 47430429839359,
1904−STORE, 47430430048256, 47430430064639,
1905−STORE, 47430429843456, 47430430048255,
1906−ERASE, 47430429843456, 47430430048255,
1907−STORE, 47430429843456, 47430430048255,
1908−ERASE, 47430430048256, 47430430064639,
1909−STORE, 47430430048256, 47430430064639,
1910−STORE, 47430430064640, 47430431903743,
1911−STORE, 47430430203904, 47430431903743,
1912−STORE, 47430430064640, 47430430203903,
1913−ERASE, 47430430203904, 47430431903743,
1914−STORE, 47430430203904, 47430431862783,
1915−STORE, 47430431862784, 47430431903743,
1916−STORE, 47430431547392, 47430431862783,
1917−STORE, 47430430203904, 47430431547391,
1918−ERASE, 47430430203904, 47430431547391,
1919−STORE, 47430430203904, 47430431547391,
1920−STORE, 47430431858688, 47430431862783,
1921−STORE, 47430431547392, 47430431858687,
1922−ERASE, 47430431547392, 47430431858687,
1923−STORE, 47430431547392, 47430431858687,
1924−STORE, 47430431887360, 47430431903743,
1925−STORE, 47430431862784, 47430431887359,
1926−ERASE, 47430431862784, 47430431887359,
1927−STORE, 47430431862784, 47430431887359,
1928−ERASE, 47430431887360, 47430431903743,
1929−STORE, 47430431887360, 47430431903743,
1930−STORE, 47430431903744, 47430432038911,
1931−ERASE, 47430431903744, 47430432038911,
1932−STORE, 47430431903744, 47430431928319,
1933−STORE, 47430431928320, 47430432038911,
1934−STORE, 47430431989760, 47430432038911,
1935−STORE, 47430431928320, 47430431989759,
1936−ERASE, 47430431928320, 47430431989759,
1937−STORE, 47430431928320, 47430431989759,
1938−STORE, 47430432014336, 47430432038911,
1939−STORE, 47430431989760, 47430432014335,
1940−ERASE, 47430431989760, 47430432014335,
1941−STORE, 47430431989760, 47430432038911,
1942−ERASE, 47430431989760, 47430432038911,
1943−STORE, 47430431989760, 47430432014335,
1944−STORE, 47430432014336, 47430432038911,
1945−STORE, 47430432022528, 47430432038911,
1946−STORE, 47430432014336, 47430432022527,
1947−ERASE, 47430432014336, 47430432022527,
1948−STORE, 47430432014336, 47430432022527,
1949−ERASE, 47430432022528, 47430432038911,
1950−STORE, 47430432022528, 47430432038911,
1951−STORE, 47430432038912, 47430432059391,
1952−ERASE, 47430432038912, 47430432059391,
1953−STORE, 47430432038912, 47430432043007,
1954−STORE, 47430432043008, 47430432059391,
1955−STORE, 47430432047104, 47430432059391,
1956−STORE, 47430432043008, 47430432047103,
1957−ERASE, 47430432043008, 47430432047103,
1958−STORE, 47430432043008, 47430432047103,
1959−STORE, 47430432051200, 47430432059391,
1960−STORE, 47430432047104, 47430432051199,
1961−ERASE, 47430432047104, 47430432051199,
1962−STORE, 47430432047104, 47430432059391,
1963−ERASE, 47430432047104, 47430432059391,
1964−STORE, 47430432047104, 47430432051199,
1965−STORE, 47430432051200, 47430432059391,
1966−ERASE, 47430432051200, 47430432059391,
1967−STORE, 47430432051200, 47430432059391,
1968−STORE, 47430432059392, 47430432067583,
1969−ERASE, 47430431862784, 47430431887359,
1970−STORE, 47430431862784, 47430431879167,
1971−STORE, 47430431879168, 47430431887359,
1972−ERASE, 47430432051200, 47430432059391,
1973−STORE, 47430432051200, 47430432055295,
1974−STORE, 47430432055296, 47430432059391,
1975−ERASE, 47430432014336, 47430432022527,
1976−STORE, 47430432014336, 47430432018431,
1977−STORE, 47430432018432, 47430432022527,
1978− };
1979− unsigned long set7[] = {
1980−STORE, 140737488347136, 140737488351231,
1981−STORE, 140729808330752, 140737488351231,
1982−ERASE, 140729808330752, 140737488351231,
1983−STORE, 140729808330752, 140729808334847,
1984−STORE, 94629632020480, 94629632192511,
1985−ERASE, 94629632020480, 94629632192511,
1986−STORE, 94629632020480, 94629632036863,
1987−STORE, 94629632036864, 94629632192511,
1988−ERASE, 94629632036864, 94629632192511,
1989−STORE, 94629632036864, 94629632139263,
1990−STORE, 94629632139264, 94629632180223,
1991−STORE, 94629632180224, 94629632192511,
1992−STORE, 47439981776896, 47439981948927,
1993−ERASE, 47439981776896, 47439981948927,
1994−STORE, 47439981776896, 47439981780991,
1995−STORE, 47439981780992, 47439981948927,
1996−ERASE, 47439981780992, 47439981948927,
1997−STORE, 47439981780992, 47439981903871,
1998−STORE, 47439981903872, 47439981936639,
1999−STORE, 47439981936640, 47439981944831,
2000−STORE, 47439981944832, 47439981948927,
2001−STORE, 140729808474112, 140729808478207,
2002−STORE, 140729808461824, 140729808474111,
2003−STORE, 47439981948928, 47439981957119,
2004−STORE, 47439981957120, 47439981965311,
2005−STORE, 47439981965312, 47439982129151,
2006−ERASE, 47439981965312, 47439982129151,
2007−STORE, 47439981965312, 47439981977599,
2008−STORE, 47439981977600, 47439982129151,
2009−STORE, 47439982075904, 47439982129151,
2010−STORE, 47439981977600, 47439982075903,
2011−ERASE, 47439981977600, 47439982075903,
2012−STORE, 47439981977600, 47439982075903,
2013−STORE, 47439982120960, 47439982129151,
2014−STORE, 47439982075904, 47439982120959,
2015−ERASE, 47439982075904, 47439982120959,
2016−STORE, 47439982075904, 47439982129151,
2017−ERASE, 47439982075904, 47439982129151,
2018−STORE, 47439982075904, 47439982120959,
2019−STORE, 47439982120960, 47439982129151,
2020−ERASE, 47439982120960, 47439982129151,
2021−STORE, 47439982120960, 47439982129151,
2022−STORE, 47439982129152, 47439985180671,
2023−STORE, 47439982673920, 47439985180671,
2024−STORE, 47439982129152, 47439982673919,
2025−ERASE, 47439982673920, 47439985180671,
2026−STORE, 47439982673920, 47439984959487,
2027−STORE, 47439984959488, 47439985180671,
2028−STORE, 47439984369664, 47439984959487,
2029−STORE, 47439982673920, 47439984369663,
2030−ERASE, 47439982673920, 47439984369663,
2031−STORE, 47439982673920, 47439984369663,
2032−STORE, 47439984955392, 47439984959487,
2033−STORE, 47439984369664, 47439984955391,
2034−ERASE, 47439984369664, 47439984955391,
2035−STORE, 47439984369664, 47439984955391,
2036−STORE, 47439985164288, 47439985180671,
2037−STORE, 47439984959488, 47439985164287,
2038−ERASE, 47439984959488, 47439985164287,
2039−STORE, 47439984959488, 47439985164287,
2040−ERASE, 47439985164288, 47439985180671,
2041−STORE, 47439985164288, 47439985180671,
2042−STORE, 47439985180672, 47439987019775,
2043−STORE, 47439985319936, 47439987019775,
2044−STORE, 47439985180672, 47439985319935,
2045−ERASE, 47439985319936, 47439987019775,
2046−STORE, 47439985319936, 47439986978815,
2047−STORE, 47439986978816, 47439987019775,
2048−STORE, 47439986663424, 47439986978815,
2049−STORE, 47439985319936, 47439986663423,
2050−ERASE, 47439985319936, 47439986663423,
2051−STORE, 47439985319936, 47439986663423,
2052−STORE, 47439986974720, 47439986978815,
2053−STORE, 47439986663424, 47439986974719,
2054−ERASE, 47439986663424, 47439986974719,
2055−STORE, 47439986663424, 47439986974719,
2056−STORE, 47439987003392, 47439987019775,
2057−STORE, 47439986978816, 47439987003391,
2058−ERASE, 47439986978816, 47439987003391,
2059−STORE, 47439986978816, 47439987003391,
2060−ERASE, 47439987003392, 47439987019775,
2061−STORE, 47439987003392, 47439987019775,
2062−STORE, 47439987019776, 47439987154943,
2063−ERASE, 47439987019776, 47439987154943,
2064−STORE, 47439987019776, 47439987044351,
2065−STORE, 47439987044352, 47439987154943,
2066−STORE, 47439987105792, 47439987154943,
2067−STORE, 47439987044352, 47439987105791,
2068−ERASE, 47439987044352, 47439987105791,
2069−STORE, 47439987044352, 47439987105791,
2070−STORE, 47439987130368, 47439987154943,
2071−STORE, 47439987105792, 47439987130367,
2072−ERASE, 47439987105792, 47439987130367,
2073−STORE, 47439987105792, 47439987154943,
2074−ERASE, 47439987105792, 47439987154943,
2075−STORE, 47439987105792, 47439987130367,
2076−STORE, 47439987130368, 47439987154943,
2077−STORE, 47439987138560, 47439987154943,
2078−STORE, 47439987130368, 47439987138559,
2079−ERASE, 47439987130368, 47439987138559,
2080−STORE, 47439987130368, 47439987138559,
2081−ERASE, 47439987138560, 47439987154943,
2082−STORE, 47439987138560, 47439987154943,
2083−STORE, 47439987154944, 47439987175423,
2084−ERASE, 47439987154944, 47439987175423,
2085−STORE, 47439987154944, 47439987159039,
2086−STORE, 47439987159040, 47439987175423,
2087−STORE, 47439987163136, 47439987175423,
2088−STORE, 47439987159040, 47439987163135,
2089−ERASE, 47439987159040, 47439987163135,
2090−STORE, 47439987159040, 47439987163135,
2091−STORE, 47439987167232, 47439987175423,
2092−STORE, 47439987163136, 47439987167231,
2093−ERASE, 47439987163136, 47439987167231,
2094−STORE, 47439987163136, 47439987175423,
2095−ERASE, 47439987163136, 47439987175423,
2096−STORE, 47439987163136, 47439987167231,
2097−STORE, 47439987167232, 47439987175423,
2098−ERASE, 47439987167232, 47439987175423,
2099−STORE, 47439987167232, 47439987175423,
2100−STORE, 47439987175424, 47439987183615,
2101−ERASE, 47439986978816, 47439987003391,
2102−STORE, 47439986978816, 47439986995199,
2103−STORE, 47439986995200, 47439987003391,
2104−ERASE, 47439987167232, 47439987175423,
2105−STORE, 47439987167232, 47439987171327,
2106−STORE, 47439987171328, 47439987175423,
2107−ERASE, 47439987130368, 47439987138559,
2108−STORE, 47439987130368, 47439987134463,
2109−STORE, 47439987134464, 47439987138559,
2110− };
2111− unsigned long set8[] = {
2112−STORE, 140737488347136, 140737488351231,
2113−STORE, 140722482974720, 140737488351231,
2114−ERASE, 140722482974720, 140737488351231,
2115−STORE, 140722482974720, 140722482978815,
2116−STORE, 94121505034240, 94121505206271,
2117−ERASE, 94121505034240, 94121505206271,
2118−STORE, 94121505034240, 94121505050623,
2119−STORE, 94121505050624, 94121505206271,
2120−ERASE, 94121505050624, 94121505206271,
2121−STORE, 94121505050624, 94121505153023,
2122−STORE, 94121505153024, 94121505193983,
2123−STORE, 94121505193984, 94121505206271,
2124−STORE, 47708483284992, 47708483457023,
2125−ERASE, 47708483284992, 47708483457023,
2126−STORE, 47708483284992, 47708483289087,
2127−STORE, 47708483289088, 47708483457023,
2128−ERASE, 47708483289088, 47708483457023,
2129−STORE, 47708483289088, 47708483411967,
2130−STORE, 47708483411968, 47708483444735,
2131−STORE, 47708483444736, 47708483452927,
2132−STORE, 47708483452928, 47708483457023,
2133−STORE, 140722483142656, 140722483146751,
2134−STORE, 140722483130368, 140722483142655,
2135−STORE, 47708483457024, 47708483465215,
2136−STORE, 47708483465216, 47708483473407,
2137−STORE, 47708483473408, 47708483637247,
2138−ERASE, 47708483473408, 47708483637247,
2139−STORE, 47708483473408, 47708483485695,
2140−STORE, 47708483485696, 47708483637247,
2141−STORE, 47708483584000, 47708483637247,
2142−STORE, 47708483485696, 47708483583999,
2143−ERASE, 47708483485696, 47708483583999,
2144−STORE, 47708483485696, 47708483583999,
2145−STORE, 47708483629056, 47708483637247,
2146−STORE, 47708483584000, 47708483629055,
2147−ERASE, 47708483584000, 47708483629055,
2148−STORE, 47708483584000, 47708483637247,
2149−ERASE, 47708483584000, 47708483637247,
2150−STORE, 47708483584000, 47708483629055,
2151−STORE, 47708483629056, 47708483637247,
2152−ERASE, 47708483629056, 47708483637247,
2153−STORE, 47708483629056, 47708483637247,
2154−STORE, 47708483637248, 47708486688767,
2155−STORE, 47708484182016, 47708486688767,
2156−STORE, 47708483637248, 47708484182015,
2157−ERASE, 47708484182016, 47708486688767,
2158−STORE, 47708484182016, 47708486467583,
2159−STORE, 47708486467584, 47708486688767,
2160−STORE, 47708485877760, 47708486467583,
2161−STORE, 47708484182016, 47708485877759,
2162−ERASE, 47708484182016, 47708485877759,
2163−STORE, 47708484182016, 47708485877759,
2164−STORE, 47708486463488, 47708486467583,
2165−STORE, 47708485877760, 47708486463487,
2166−ERASE, 47708485877760, 47708486463487,
2167−STORE, 47708485877760, 47708486463487,
2168−STORE, 47708486672384, 47708486688767,
2169−STORE, 47708486467584, 47708486672383,
2170−ERASE, 47708486467584, 47708486672383,
2171−STORE, 47708486467584, 47708486672383,
2172−ERASE, 47708486672384, 47708486688767,
2173−STORE, 47708486672384, 47708486688767,
2174−STORE, 47708486688768, 47708488527871,
2175−STORE, 47708486828032, 47708488527871,
2176−STORE, 47708486688768, 47708486828031,
2177−ERASE, 47708486828032, 47708488527871,
2178−STORE, 47708486828032, 47708488486911,
2179−STORE, 47708488486912, 47708488527871,
2180−STORE, 47708488171520, 47708488486911,
2181−STORE, 47708486828032, 47708488171519,
2182−ERASE, 47708486828032, 47708488171519,
2183−STORE, 47708486828032, 47708488171519,
2184−STORE, 47708488482816, 47708488486911,
2185−STORE, 47708488171520, 47708488482815,
2186−ERASE, 47708488171520, 47708488482815,
2187−STORE, 47708488171520, 47708488482815,
2188−STORE, 47708488511488, 47708488527871,
2189−STORE, 47708488486912, 47708488511487,
2190−ERASE, 47708488486912, 47708488511487,
2191−STORE, 47708488486912, 47708488511487,
2192−ERASE, 47708488511488, 47708488527871,
2193−STORE, 47708488511488, 47708488527871,
2194−STORE, 47708488527872, 47708488663039,
2195−ERASE, 47708488527872, 47708488663039,
2196−STORE, 47708488527872, 47708488552447,
2197−STORE, 47708488552448, 47708488663039,
2198−STORE, 47708488613888, 47708488663039,
2199−STORE, 47708488552448, 47708488613887,
2200−ERASE, 47708488552448, 47708488613887,
2201−STORE, 47708488552448, 47708488613887,
2202−STORE, 47708488638464, 47708488663039,
2203−STORE, 47708488613888, 47708488638463,
2204−ERASE, 47708488613888, 47708488638463,
2205−STORE, 47708488613888, 47708488663039,
2206−ERASE, 47708488613888, 47708488663039,
2207−STORE, 47708488613888, 47708488638463,
2208−STORE, 47708488638464, 47708488663039,
2209−STORE, 47708488646656, 47708488663039,
2210−STORE, 47708488638464, 47708488646655,
2211−ERASE, 47708488638464, 47708488646655,
2212−STORE, 47708488638464, 47708488646655,
2213−ERASE, 47708488646656, 47708488663039,
2214−STORE, 47708488646656, 47708488663039,
2215−STORE, 47708488663040, 47708488683519,
2216−ERASE, 47708488663040, 47708488683519,
2217−STORE, 47708488663040, 47708488667135,
2218−STORE, 47708488667136, 47708488683519,
2219−STORE, 47708488671232, 47708488683519,
2220−STORE, 47708488667136, 47708488671231,
2221−ERASE, 47708488667136, 47708488671231,
2222−STORE, 47708488667136, 47708488671231,
2223−STORE, 47708488675328, 47708488683519,
2224−STORE, 47708488671232, 47708488675327,
2225−ERASE, 47708488671232, 47708488675327,
2226−STORE, 47708488671232, 47708488683519,
2227−ERASE, 47708488671232, 47708488683519,
2228−STORE, 47708488671232, 47708488675327,
2229−STORE, 47708488675328, 47708488683519,
2230−ERASE, 47708488675328, 47708488683519,
2231−STORE, 47708488675328, 47708488683519,
2232−STORE, 47708488683520, 47708488691711,
2233−ERASE, 47708488486912, 47708488511487,
2234−STORE, 47708488486912, 47708488503295,
2235−STORE, 47708488503296, 47708488511487,
2236−ERASE, 47708488675328, 47708488683519,
2237−STORE, 47708488675328, 47708488679423,
2238−STORE, 47708488679424, 47708488683519,
2239−ERASE, 47708488638464, 47708488646655,
2240−STORE, 47708488638464, 47708488642559,
2241−STORE, 47708488642560, 47708488646655,
2242− };
958+ MT_BUG_ON(mt, !mtree_empty(mt));
959+ check_insert_range(mt, r[0], r[1], xa_mk_value(r[0]), 0);
960+ check_insert_range(mt, r[2], r[3], xa_mk_value(r[2]), 0);
961+ check_insert_range(mt, r[4], r[5], xa_mk_value(r[4]), -EEXIST);
962+ MT_BUG_ON(mt, !mt_height(mt));
963+ /* Store */
964+ check_store_range(mt, r[4], r[5], xa_mk_value(r[4]), 0);
965+ check_store_range(mt, r[6], r[7], xa_mk_value(r[6]), 0);
966+ check_store_range(mt, r[8], r[9], xa_mk_value(r[8]), 0);
967+ MT_BUG_ON(mt, !mt_height(mt));
968+ mtree_destroy(mt);
969+ MT_BUG_ON(mt, mt_height(mt));
2243970
2244− unsigned long set9[] = {
2245−STORE, 140737488347136, 140737488351231,
2246−STORE, 140736427839488, 140737488351231,
2247−ERASE, 140736427839488, 140736427839488,
2248−STORE, 140736427839488, 140736427843583,
2249−STORE, 94071213395968, 94071213567999,
2250−ERASE, 94071213395968, 94071213395968,
2251−STORE, 94071213395968, 94071213412351,
2252−STORE, 94071213412352, 94071213567999,
2253−ERASE, 94071213412352, 94071213412352,
2254−STORE, 94071213412352, 94071213514751,
2255−STORE, 94071213514752, 94071213555711,
2256−STORE, 94071213555712, 94071213567999,
2257−STORE, 139968410644480, 139968410816511,
2258−ERASE, 139968410644480, 139968410644480,
2259−STORE, 139968410644480, 139968410648575,
2260−STORE, 139968410648576, 139968410816511,
2261−ERASE, 139968410648576, 139968410648576,
2262−STORE, 139968410648576, 139968410771455,
2263−STORE, 139968410771456, 139968410804223,
2264−STORE, 139968410804224, 139968410812415,
2265−STORE, 139968410812416, 139968410816511,
2266−STORE, 140736429277184, 140736429281279,
2267−STORE, 140736429264896, 140736429277183,
2268−STORE, 47664384352256, 47664384360447,
2269−STORE, 47664384360448, 47664384368639,
2270−STORE, 47664384368640, 47664384532479,
2271−ERASE, 47664384368640, 47664384368640,
2272−STORE, 47664384368640, 47664384380927,
2273−STORE, 47664384380928, 47664384532479,
2274−STORE, 47664384479232, 47664384532479,
2275−STORE, 47664384380928, 47664384479231,
2276−ERASE, 47664384380928, 47664384380928,
2277−STORE, 47664384380928, 47664384479231,
2278−STORE, 47664384524288, 47664384532479,
2279−STORE, 47664384479232, 47664384524287,
2280−ERASE, 47664384479232, 47664384479232,
2281−STORE, 47664384479232, 47664384532479,
2282−ERASE, 47664384479232, 47664384479232,
2283−STORE, 47664384479232, 47664384524287,
2284−STORE, 47664384524288, 47664384532479,
2285−ERASE, 47664384524288, 47664384524288,
2286−STORE, 47664384524288, 47664384532479,
2287−STORE, 47664384532480, 47664387583999,
2288−STORE, 47664385077248, 47664387583999,
2289−STORE, 47664384532480, 47664385077247,
2290−ERASE, 47664385077248, 47664385077248,
2291−STORE, 47664385077248, 47664387362815,
2292−STORE, 47664387362816, 47664387583999,
2293−STORE, 47664386772992, 47664387362815,
2294−STORE, 47664385077248, 47664386772991,
2295−ERASE, 47664385077248, 47664385077248,
2296−STORE, 47664385077248, 47664386772991,
2297−STORE, 47664387358720, 47664387362815,
2298−STORE, 47664386772992, 47664387358719,
2299−ERASE, 47664386772992, 47664386772992,
2300−STORE, 47664386772992, 47664387358719,
2301−STORE, 47664387567616, 47664387583999,
2302−STORE, 47664387362816, 47664387567615,
2303−ERASE, 47664387362816, 47664387362816,
2304−STORE, 47664387362816, 47664387567615,
2305−ERASE, 47664387567616, 47664387567616,
2306−STORE, 47664387567616, 47664387583999,
2307−STORE, 47664387584000, 47664389423103,
2308−STORE, 47664387723264, 47664389423103,
2309−STORE, 47664387584000, 47664387723263,
2310−ERASE, 47664387723264, 47664387723264,
2311−STORE, 47664387723264, 47664389382143,
2312−STORE, 47664389382144, 47664389423103,
2313−STORE, 47664389066752, 47664389382143,
2314−STORE, 47664387723264, 47664389066751,
2315−ERASE, 47664387723264, 47664387723264,
2316−STORE, 47664387723264, 47664389066751,
2317−STORE, 47664389378048, 47664389382143,
2318−STORE, 47664389066752, 47664389378047,
2319−ERASE, 47664389066752, 47664389066752,
2320−STORE, 47664389066752, 47664389378047,
2321−STORE, 47664389406720, 47664389423103,
2322−STORE, 47664389382144, 47664389406719,
2323−ERASE, 47664389382144, 47664389382144,
2324−STORE, 47664389382144, 47664389406719,
2325−ERASE, 47664389406720, 47664389406720,
2326−STORE, 47664389406720, 47664389423103,
2327−STORE, 47664389423104, 47664389558271,
2328−ERASE, 47664389423104, 47664389423104,
2329−STORE, 47664389423104, 47664389447679,
2330−STORE, 47664389447680, 47664389558271,
2331−STORE, 47664389509120, 47664389558271,
2332−STORE, 47664389447680, 47664389509119,
2333−ERASE, 47664389447680, 47664389447680,
2334−STORE, 47664389447680, 47664389509119,
2335−STORE, 47664389533696, 47664389558271,
2336−STORE, 47664389509120, 47664389533695,
2337−ERASE, 47664389509120, 47664389509120,
2338−STORE, 47664389509120, 47664389558271,
2339−ERASE, 47664389509120, 47664389509120,
2340−STORE, 47664389509120, 47664389533695,
2341−STORE, 47664389533696, 47664389558271,
2342−STORE, 47664389541888, 47664389558271,
2343−STORE, 47664389533696, 47664389541887,
2344−ERASE, 47664389533696, 47664389533696,
2345−STORE, 47664389533696, 47664389541887,
2346−ERASE, 47664389541888, 47664389541888,
2347−STORE, 47664389541888, 47664389558271,
2348−STORE, 47664389558272, 47664389578751,
2349−ERASE, 47664389558272, 47664389558272,
2350−STORE, 47664389558272, 47664389562367,
2351−STORE, 47664389562368, 47664389578751,
2352−STORE, 47664389566464, 47664389578751,
2353−STORE, 47664389562368, 47664389566463,
2354−ERASE, 47664389562368, 47664389562368,
2355−STORE, 47664389562368, 47664389566463,
2356−STORE, 47664389570560, 47664389578751,
2357−STORE, 47664389566464, 47664389570559,
2358−ERASE, 47664389566464, 47664389566464,
2359−STORE, 47664389566464, 47664389578751,
2360−ERASE, 47664389566464, 47664389566464,
2361−STORE, 47664389566464, 47664389570559,
2362−STORE, 47664389570560, 47664389578751,
2363−ERASE, 47664389570560, 47664389570560,
2364−STORE, 47664389570560, 47664389578751,
2365−STORE, 47664389578752, 47664389586943,
2366−ERASE, 47664389382144, 47664389382144,
2367−STORE, 47664389382144, 47664389398527,
2368−STORE, 47664389398528, 47664389406719,
2369−ERASE, 47664389570560, 47664389570560,
2370−STORE, 47664389570560, 47664389574655,
2371−STORE, 47664389574656, 47664389578751,
2372−ERASE, 47664389533696, 47664389533696,
2373−STORE, 47664389533696, 47664389537791,
2374−STORE, 47664389537792, 47664389541887,
2375−ERASE, 47664387362816, 47664387362816,
2376−STORE, 47664387362816, 47664387559423,
2377−STORE, 47664387559424, 47664387567615,
2378−ERASE, 47664384524288, 47664384524288,
2379−STORE, 47664384524288, 47664384528383,
2380−STORE, 47664384528384, 47664384532479,
2381−ERASE, 94071213555712, 94071213555712,
2382−STORE, 94071213555712, 94071213563903,
2383−STORE, 94071213563904, 94071213567999,
2384−ERASE, 139968410804224, 139968410804224,
2385−STORE, 139968410804224, 139968410808319,
2386−STORE, 139968410808320, 139968410812415,
2387−ERASE, 47664384352256, 47664384352256,
2388−STORE, 94071244402688, 94071244537855,
2389−STORE, 140737488347136, 140737488351231,
2390−STORE, 140728271503360, 140737488351231,
2391−ERASE, 140728271503360, 140728271503360,
2392−STORE, 140728271503360, 140728271507455,
2393−STORE, 94410361982976, 94410362155007,
2394−ERASE, 94410361982976, 94410361982976,
2395−STORE, 94410361982976, 94410361999359,
2396−STORE, 94410361999360, 94410362155007,
2397−ERASE, 94410361999360, 94410361999360,
2398−STORE, 94410361999360, 94410362101759,
2399−STORE, 94410362101760, 94410362142719,
2400−STORE, 94410362142720, 94410362155007,
2401−STORE, 140351953997824, 140351954169855,
2402−ERASE, 140351953997824, 140351953997824,
2403−STORE, 140351953997824, 140351954001919,
2404−STORE, 140351954001920, 140351954169855,
2405−ERASE, 140351954001920, 140351954001920,
2406−STORE, 140351954001920, 140351954124799,
2407−STORE, 140351954124800, 140351954157567,
2408−STORE, 140351954157568, 140351954165759,
2409−STORE, 140351954165760, 140351954169855,
2410−STORE, 140728272429056, 140728272433151,
2411−STORE, 140728272416768, 140728272429055,
2412−STORE, 47280840998912, 47280841007103,
2413−STORE, 47280841007104, 47280841015295,
2414−STORE, 47280841015296, 47280841179135,
2415−ERASE, 47280841015296, 47280841015296,
2416−STORE, 47280841015296, 47280841027583,
2417−STORE, 47280841027584, 47280841179135,
2418−STORE, 47280841125888, 47280841179135,
2419−STORE, 47280841027584, 47280841125887,
2420−ERASE, 47280841027584, 47280841027584,
2421−STORE, 47280841027584, 47280841125887,
2422−STORE, 47280841170944, 47280841179135,
2423−STORE, 47280841125888, 47280841170943,
2424−ERASE, 47280841125888, 47280841125888,
2425−STORE, 47280841125888, 47280841179135,
2426−ERASE, 47280841125888, 47280841125888,
2427−STORE, 47280841125888, 47280841170943,
2428−STORE, 47280841170944, 47280841179135,
2429−ERASE, 47280841170944, 47280841170944,
2430−STORE, 47280841170944, 47280841179135,
2431−STORE, 47280841179136, 47280844230655,
2432−STORE, 47280841723904, 47280844230655,
2433−STORE, 47280841179136, 47280841723903,
2434−ERASE, 47280841723904, 47280841723904,
2435−STORE, 47280841723904, 47280844009471,
2436−STORE, 47280844009472, 47280844230655,
2437−STORE, 47280843419648, 47280844009471,
2438−STORE, 47280841723904, 47280843419647,
2439−ERASE, 47280841723904, 47280841723904,
2440−STORE, 47280841723904, 47280843419647,
2441−STORE, 47280844005376, 47280844009471,
2442−STORE, 47280843419648, 47280844005375,
2443−ERASE, 47280843419648, 47280843419648,
2444−STORE, 47280843419648, 47280844005375,
2445−STORE, 47280844214272, 47280844230655,
2446−STORE, 47280844009472, 47280844214271,
2447−ERASE, 47280844009472, 47280844009472,
2448−STORE, 47280844009472, 47280844214271,
2449−ERASE, 47280844214272, 47280844214272,
2450−STORE, 47280844214272, 47280844230655,
2451−STORE, 47280844230656, 47280846069759,
2452−STORE, 47280844369920, 47280846069759,
2453−STORE, 47280844230656, 47280844369919,
2454−ERASE, 47280844369920, 47280844369920,
2455−STORE, 47280844369920, 47280846028799,
2456−STORE, 47280846028800, 47280846069759,
2457−STORE, 47280845713408, 47280846028799,
2458−STORE, 47280844369920, 47280845713407,
2459−ERASE, 47280844369920, 47280844369920,
2460−STORE, 47280844369920, 47280845713407,
2461−STORE, 47280846024704, 47280846028799,
2462−STORE, 47280845713408, 47280846024703,
2463−ERASE, 47280845713408, 47280845713408,
2464−STORE, 47280845713408, 47280846024703,
2465−STORE, 47280846053376, 47280846069759,
2466−STORE, 47280846028800, 47280846053375,
2467−ERASE, 47280846028800, 47280846028800,
2468−STORE, 47280846028800, 47280846053375,
2469−ERASE, 47280846053376, 47280846053376,
2470−STORE, 47280846053376, 47280846069759,
2471−STORE, 47280846069760, 47280846204927,
2472−ERASE, 47280846069760, 47280846069760,
2473−STORE, 47280846069760, 47280846094335,
2474−STORE, 47280846094336, 47280846204927,
2475−STORE, 47280846155776, 47280846204927,
2476−STORE, 47280846094336, 47280846155775,
2477−ERASE, 47280846094336, 47280846094336,
2478−STORE, 47280846094336, 47280846155775,
2479−STORE, 47280846180352, 47280846204927,
2480−STORE, 47280846155776, 47280846180351,
2481−ERASE, 47280846155776, 47280846155776,
2482−STORE, 47280846155776, 47280846204927,
2483−ERASE, 47280846155776, 47280846155776,
2484−STORE, 47280846155776, 47280846180351,
2485−STORE, 47280846180352, 47280846204927,
2486−STORE, 47280846188544, 47280846204927,
2487−STORE, 47280846180352, 47280846188543,
2488−ERASE, 47280846180352, 47280846180352,
2489−STORE, 47280846180352, 47280846188543,
2490−ERASE, 47280846188544, 47280846188544,
2491−STORE, 47280846188544, 47280846204927,
2492−STORE, 47280846204928, 47280846225407,
2493−ERASE, 47280846204928, 47280846204928,
2494−STORE, 47280846204928, 47280846209023,
2495−STORE, 47280846209024, 47280846225407,
2496−STORE, 47280846213120, 47280846225407,
2497−STORE, 47280846209024, 47280846213119,
2498−ERASE, 47280846209024, 47280846209024,
2499−STORE, 47280846209024, 47280846213119,
2500−STORE, 47280846217216, 47280846225407,
2501−STORE, 47280846213120, 47280846217215,
2502−ERASE, 47280846213120, 47280846213120,
2503−STORE, 47280846213120, 47280846225407,
2504−ERASE, 47280846213120, 47280846213120,
2505−STORE, 47280846213120, 47280846217215,
2506−STORE, 47280846217216, 47280846225407,
2507−ERASE, 47280846217216, 47280846217216,
2508−STORE, 47280846217216, 47280846225407,
2509−STORE, 47280846225408, 47280846233599,
2510−ERASE, 47280846028800, 47280846028800,
2511−STORE, 47280846028800, 47280846045183,
2512−STORE, 47280846045184, 47280846053375,
2513−ERASE, 47280846217216, 47280846217216,
2514−STORE, 47280846217216, 47280846221311,
2515−STORE, 47280846221312, 47280846225407,
2516−ERASE, 47280846180352, 47280846180352,
2517−STORE, 47280846180352, 47280846184447,
2518−STORE, 47280846184448, 47280846188543,
2519−ERASE, 47280844009472, 47280844009472,
2520−STORE, 47280844009472, 47280844206079,
2521−STORE, 47280844206080, 47280844214271,
2522−ERASE, 47280841170944, 47280841170944,
2523−STORE, 47280841170944, 47280841175039,
2524−STORE, 47280841175040, 47280841179135,
2525−ERASE, 94410362142720, 94410362142720,
2526−STORE, 94410362142720, 94410362150911,
2527−STORE, 94410362150912, 94410362155007,
2528−ERASE, 140351954157568, 140351954157568,
2529−STORE, 140351954157568, 140351954161663,
2530−STORE, 140351954161664, 140351954165759,
2531−ERASE, 47280840998912, 47280840998912,
2532−STORE, 94410379456512, 94410379591679,
2533−STORE, 140737488347136, 140737488351231,
2534−STORE, 140732946362368, 140737488351231,
2535−ERASE, 140732946362368, 140732946362368,
2536−STORE, 140732946362368, 140732946366463,
2537−STORE, 94352937934848, 94352938106879,
2538−ERASE, 94352937934848, 94352937934848,
2539−STORE, 94352937934848, 94352937951231,
2540−STORE, 94352937951232, 94352938106879,
2541−ERASE, 94352937951232, 94352937951232,
2542−STORE, 94352937951232, 94352938053631,
2543−STORE, 94352938053632, 94352938094591,
2544−STORE, 94352938094592, 94352938106879,
2545−STORE, 140595518742528, 140595518914559,
2546−ERASE, 140595518742528, 140595518742528,
2547−STORE, 140595518742528, 140595518746623,
2548−STORE, 140595518746624, 140595518914559,
2549−ERASE, 140595518746624, 140595518746624,
2550−STORE, 140595518746624, 140595518869503,
2551−STORE, 140595518869504, 140595518902271,
2552−STORE, 140595518902272, 140595518910463,
2553−STORE, 140595518910464, 140595518914559,
2554−STORE, 140732947468288, 140732947472383,
2555−STORE, 140732947456000, 140732947468287,
2556−STORE, 47037276254208, 47037276262399,
2557−STORE, 47037276262400, 47037276270591,
2558−STORE, 47037276270592, 47037276434431,
2559−ERASE, 47037276270592, 47037276270592,
2560−STORE, 47037276270592, 47037276282879,
2561−STORE, 47037276282880, 47037276434431,
2562−STORE, 47037276381184, 47037276434431,
2563−STORE, 47037276282880, 47037276381183,
2564−ERASE, 47037276282880, 47037276282880,
2565−STORE, 47037276282880, 47037276381183,
2566−STORE, 47037276426240, 47037276434431,
2567−STORE, 47037276381184, 47037276426239,
2568−ERASE, 47037276381184, 47037276381184,
2569−STORE, 47037276381184, 47037276434431,
2570−ERASE, 47037276381184, 47037276381184,
2571−STORE, 47037276381184, 47037276426239,
2572−STORE, 47037276426240, 47037276434431,
2573−ERASE, 47037276426240, 47037276426240,
2574−STORE, 47037276426240, 47037276434431,
2575−STORE, 47037276434432, 47037279485951,
2576−STORE, 47037276979200, 47037279485951,
2577−STORE, 47037276434432, 47037276979199,
2578−ERASE, 47037276979200, 47037276979200,
2579−STORE, 47037276979200, 47037279264767,
2580−STORE, 47037279264768, 47037279485951,
2581−STORE, 47037278674944, 47037279264767,
2582−STORE, 47037276979200, 47037278674943,
2583−ERASE, 47037276979200, 47037276979200,
2584−STORE, 47037276979200, 47037278674943,
2585−STORE, 47037279260672, 47037279264767,
2586−STORE, 47037278674944, 47037279260671,
2587−ERASE, 47037278674944, 47037278674944,
2588−STORE, 47037278674944, 47037279260671,
2589−STORE, 47037279469568, 47037279485951,
2590−STORE, 47037279264768, 47037279469567,
2591−ERASE, 47037279264768, 47037279264768,
2592−STORE, 47037279264768, 47037279469567,
2593−ERASE, 47037279469568, 47037279469568,
2594−STORE, 47037279469568, 47037279485951,
2595−STORE, 47037279485952, 47037281325055,
2596−STORE, 47037279625216, 47037281325055,
2597−STORE, 47037279485952, 47037279625215,
2598−ERASE, 47037279625216, 47037279625216,
2599−STORE, 47037279625216, 47037281284095,
2600−STORE, 47037281284096, 47037281325055,
2601−STORE, 47037280968704, 47037281284095,
2602−STORE, 47037279625216, 47037280968703,
2603−ERASE, 47037279625216, 47037279625216,
2604−STORE, 47037279625216, 47037280968703,
2605−STORE, 47037281280000, 47037281284095,
2606−STORE, 47037280968704, 47037281279999,
2607−ERASE, 47037280968704, 47037280968704,
2608−STORE, 47037280968704, 47037281279999,
2609−STORE, 47037281308672, 47037281325055,
2610−STORE, 47037281284096, 47037281308671,
2611−ERASE, 47037281284096, 47037281284096,
2612−STORE, 47037281284096, 47037281308671,
2613−ERASE, 47037281308672, 47037281308672,
2614−STORE, 47037281308672, 47037281325055,
2615−STORE, 47037281325056, 47037281460223,
2616−ERASE, 47037281325056, 47037281325056,
2617−STORE, 47037281325056, 47037281349631,
2618−STORE, 47037281349632, 47037281460223,
2619−STORE, 47037281411072, 47037281460223,
2620−STORE, 47037281349632, 47037281411071,
2621−ERASE, 47037281349632, 47037281349632,
2622−STORE, 47037281349632, 47037281411071,
2623−STORE, 47037281435648, 47037281460223,
2624−STORE, 47037281411072, 47037281435647,
2625−ERASE, 47037281411072, 47037281411072,
2626−STORE, 47037281411072, 47037281460223,
2627−ERASE, 47037281411072, 47037281411072,
2628−STORE, 47037281411072, 47037281435647,
2629−STORE, 47037281435648, 47037281460223,
2630−STORE, 47037281443840, 47037281460223,
2631−STORE, 47037281435648, 47037281443839,
2632−ERASE, 47037281435648, 47037281435648,
2633−STORE, 47037281435648, 47037281443839,
2634−ERASE, 47037281443840, 47037281443840,
2635−STORE, 47037281443840, 47037281460223,
2636−STORE, 47037281460224, 47037281480703,
2637−ERASE, 47037281460224, 47037281460224,
2638−STORE, 47037281460224, 47037281464319,
2639−STORE, 47037281464320, 47037281480703,
2640−STORE, 47037281468416, 47037281480703,
2641−STORE, 47037281464320, 47037281468415,
2642−ERASE, 47037281464320, 47037281464320,
2643−STORE, 47037281464320, 47037281468415,
2644−STORE, 47037281472512, 47037281480703,
2645−STORE, 47037281468416, 47037281472511,
2646−ERASE, 47037281468416, 47037281468416,
2647−STORE, 47037281468416, 47037281480703,
2648−ERASE, 47037281468416, 47037281468416,
2649−STORE, 47037281468416, 47037281472511,
2650−STORE, 47037281472512, 47037281480703,
2651−ERASE, 47037281472512, 47037281472512,
2652−STORE, 47037281472512, 47037281480703,
2653−STORE, 47037281480704, 47037281488895,
2654−ERASE, 47037281284096, 47037281284096,
2655−STORE, 47037281284096, 47037281300479,
2656−STORE, 47037281300480, 47037281308671,
2657−ERASE, 47037281472512, 47037281472512,
2658−STORE, 47037281472512, 47037281476607,
2659−STORE, 47037281476608, 47037281480703,
2660−ERASE, 47037281435648, 47037281435648,
2661−STORE, 47037281435648, 47037281439743,
2662−STORE, 47037281439744, 47037281443839,
2663−ERASE, 47037279264768, 47037279264768,
2664−STORE, 47037279264768, 47037279461375,
2665−STORE, 47037279461376, 47037279469567,
2666−ERASE, 47037276426240, 47037276426240,
2667−STORE, 47037276426240, 47037276430335,
2668−STORE, 47037276430336, 47037276434431,
2669−ERASE, 94352938094592, 94352938094592,
2670−STORE, 94352938094592, 94352938102783,
2671−STORE, 94352938102784, 94352938106879,
2672−ERASE, 140595518902272, 140595518902272,
2673−STORE, 140595518902272, 140595518906367,
2674−STORE, 140595518906368, 140595518910463,
2675−ERASE, 47037276254208, 47037276254208,
2676−STORE, 94352938438656, 94352938573823,
2677−STORE, 140737488347136, 140737488351231,
2678−STORE, 140733506027520, 140737488351231,
2679−ERASE, 140733506027520, 140733506027520,
2680−STORE, 140733506027520, 140733506031615,
2681−STORE, 94150123073536, 94150123245567,
2682−ERASE, 94150123073536, 94150123073536,
2683−STORE, 94150123073536, 94150123089919,
2684−STORE, 94150123089920, 94150123245567,
2685−ERASE, 94150123089920, 94150123089920,
2686−STORE, 94150123089920, 94150123192319,
2687−STORE, 94150123192320, 94150123233279,
2688−STORE, 94150123233280, 94150123245567,
2689−STORE, 140081290375168, 140081290547199,
2690−ERASE, 140081290375168, 140081290375168,
2691−STORE, 140081290375168, 140081290379263,
2692−STORE, 140081290379264, 140081290547199,
2693−ERASE, 140081290379264, 140081290379264,
2694−STORE, 140081290379264, 140081290502143,
2695−STORE, 140081290502144, 140081290534911,
2696−STORE, 140081290534912, 140081290543103,
2697−STORE, 140081290543104, 140081290547199,
2698−STORE, 140733506707456, 140733506711551,
2699−STORE, 140733506695168, 140733506707455,
2700−STORE, 47551504621568, 47551504629759,
2701−STORE, 47551504629760, 47551504637951,
2702−STORE, 47551504637952, 47551504801791,
2703−ERASE, 47551504637952, 47551504637952,
2704−STORE, 47551504637952, 47551504650239,
2705−STORE, 47551504650240, 47551504801791,
2706−STORE, 47551504748544, 47551504801791,
2707−STORE, 47551504650240, 47551504748543,
2708−ERASE, 47551504650240, 47551504650240,
2709−STORE, 47551504650240, 47551504748543,
2710−STORE, 47551504793600, 47551504801791,
2711−STORE, 47551504748544, 47551504793599,
2712−ERASE, 47551504748544, 47551504748544,
2713−STORE, 47551504748544, 47551504801791,
2714−ERASE, 47551504748544, 47551504748544,
2715−STORE, 47551504748544, 47551504793599,
2716−STORE, 47551504793600, 47551504801791,
2717−ERASE, 47551504793600, 47551504793600,
2718−STORE, 47551504793600, 47551504801791,
2719−STORE, 47551504801792, 47551507853311,
2720−STORE, 47551505346560, 47551507853311,
2721−STORE, 47551504801792, 47551505346559,
2722−ERASE, 47551505346560, 47551505346560,
2723−STORE, 47551505346560, 47551507632127,
2724−STORE, 47551507632128, 47551507853311,
2725−STORE, 47551507042304, 47551507632127,
2726−STORE, 47551505346560, 47551507042303,
2727−ERASE, 47551505346560, 47551505346560,
2728−STORE, 47551505346560, 47551507042303,
2729−STORE, 47551507628032, 47551507632127,
2730−STORE, 47551507042304, 47551507628031,
2731−ERASE, 47551507042304, 47551507042304,
2732−STORE, 47551507042304, 47551507628031,
2733−STORE, 47551507836928, 47551507853311,
2734−STORE, 47551507632128, 47551507836927,
2735−ERASE, 47551507632128, 47551507632128,
2736−STORE, 47551507632128, 47551507836927,
2737−ERASE, 47551507836928, 47551507836928,
2738−STORE, 47551507836928, 47551507853311,
2739−STORE, 47551507853312, 47551509692415,
2740−STORE, 47551507992576, 47551509692415,
2741−STORE, 47551507853312, 47551507992575,
2742−ERASE, 47551507992576, 47551507992576,
2743−STORE, 47551507992576, 47551509651455,
2744−STORE, 47551509651456, 47551509692415,
2745−STORE, 47551509336064, 47551509651455,
2746−STORE, 47551507992576, 47551509336063,
2747−ERASE, 47551507992576, 47551507992576,
2748−STORE, 47551507992576, 47551509336063,
2749−STORE, 47551509647360, 47551509651455,
2750−STORE, 47551509336064, 47551509647359,
2751−ERASE, 47551509336064, 47551509336064,
2752−STORE, 47551509336064, 47551509647359,
2753−STORE, 47551509676032, 47551509692415,
2754−STORE, 47551509651456, 47551509676031,
2755−ERASE, 47551509651456, 47551509651456,
2756−STORE, 47551509651456, 47551509676031,
2757−ERASE, 47551509676032, 47551509676032,
2758−STORE, 47551509676032, 47551509692415,
2759−STORE, 47551509692416, 47551509827583,
2760−ERASE, 47551509692416, 47551509692416,
2761−STORE, 47551509692416, 47551509716991,
2762−STORE, 47551509716992, 47551509827583,
2763−STORE, 47551509778432, 47551509827583,
2764−STORE, 47551509716992, 47551509778431,
2765−ERASE, 47551509716992, 47551509716992,
2766−STORE, 47551509716992, 47551509778431,
2767−STORE, 47551509803008, 47551509827583,
2768−STORE, 47551509778432, 47551509803007,
2769−ERASE, 47551509778432, 47551509778432,
2770−STORE, 47551509778432, 47551509827583,
2771−ERASE, 47551509778432, 47551509778432,
2772−STORE, 47551509778432, 47551509803007,
2773−STORE, 47551509803008, 47551509827583,
2774−STORE, 47551509811200, 47551509827583,
2775−STORE, 47551509803008, 47551509811199,
2776−ERASE, 47551509803008, 47551509803008,
2777−STORE, 47551509803008, 47551509811199,
2778−ERASE, 47551509811200, 47551509811200,
2779−STORE, 47551509811200, 47551509827583,
2780−STORE, 47551509827584, 47551509848063,
2781−ERASE, 47551509827584, 47551509827584,
2782−STORE, 47551509827584, 47551509831679,
2783−STORE, 47551509831680, 47551509848063,
2784−STORE, 47551509835776, 47551509848063,
2785−STORE, 47551509831680, 47551509835775,
2786−ERASE, 47551509831680, 47551509831680,
2787−STORE, 47551509831680, 47551509835775,
2788−STORE, 47551509839872, 47551509848063,
2789−STORE, 47551509835776, 47551509839871,
2790−ERASE, 47551509835776, 47551509835776,
2791−STORE, 47551509835776, 47551509848063,
2792−ERASE, 47551509835776, 47551509835776,
2793−STORE, 47551509835776, 47551509839871,
2794−STORE, 47551509839872, 47551509848063,
2795−ERASE, 47551509839872, 47551509839872,
2796−STORE, 47551509839872, 47551509848063,
2797−STORE, 47551509848064, 47551509856255,
2798−ERASE, 47551509651456, 47551509651456,
2799−STORE, 47551509651456, 47551509667839,
2800−STORE, 47551509667840, 47551509676031,
2801−ERASE, 47551509839872, 47551509839872,
2802−STORE, 47551509839872, 47551509843967,
2803−STORE, 47551509843968, 47551509848063,
2804−ERASE, 47551509803008, 47551509803008,
2805−STORE, 47551509803008, 47551509807103,
2806−STORE, 47551509807104, 47551509811199,
2807−ERASE, 47551507632128, 47551507632128,
2808−STORE, 47551507632128, 47551507828735,
2809−STORE, 47551507828736, 47551507836927,
2810−ERASE, 47551504793600, 47551504793600,
2811−STORE, 47551504793600, 47551504797695,
2812−STORE, 47551504797696, 47551504801791,
2813−ERASE, 94150123233280, 94150123233280,
2814−STORE, 94150123233280, 94150123241471,
2815−STORE, 94150123241472, 94150123245567,
2816−ERASE, 140081290534912, 140081290534912,
2817−STORE, 140081290534912, 140081290539007,
2818−STORE, 140081290539008, 140081290543103,
2819−ERASE, 47551504621568, 47551504621568,
2820−STORE, 94150148112384, 94150148247551,
2821−STORE, 140737488347136, 140737488351231,
2822−STORE, 140734389334016, 140737488351231,
2823−ERASE, 140734389334016, 140734389334016,
2824−STORE, 140734389334016, 140734389338111,
2825−STORE, 94844636606464, 94844636778495,
2826−ERASE, 94844636606464, 94844636606464,
2827−STORE, 94844636606464, 94844636622847,
2828−STORE, 94844636622848, 94844636778495,
2829−ERASE, 94844636622848, 94844636622848,
2830−STORE, 94844636622848, 94844636725247,
2831−STORE, 94844636725248, 94844636766207,
2832−STORE, 94844636766208, 94844636778495,
2833−STORE, 139922765217792, 139922765389823,
2834−ERASE, 139922765217792, 139922765217792,
2835−STORE, 139922765217792, 139922765221887,
2836−STORE, 139922765221888, 139922765389823,
2837−ERASE, 139922765221888, 139922765221888,
2838−STORE, 139922765221888, 139922765344767,
2839−STORE, 139922765344768, 139922765377535,
2840−STORE, 139922765377536, 139922765385727,
2841−STORE, 139922765385728, 139922765389823,
2842−STORE, 140734389678080, 140734389682175,
2843−STORE, 140734389665792, 140734389678079,
2844−STORE, 47710029778944, 47710029787135,
2845−STORE, 47710029787136, 47710029795327,
2846−STORE, 47710029795328, 47710029959167,
2847−ERASE, 47710029795328, 47710029795328,
2848−STORE, 47710029795328, 47710029807615,
2849−STORE, 47710029807616, 47710029959167,
2850−STORE, 47710029905920, 47710029959167,
2851−STORE, 47710029807616, 47710029905919,
2852−ERASE, 47710029807616, 47710029807616,
2853−STORE, 47710029807616, 47710029905919,
2854−STORE, 47710029950976, 47710029959167,
2855−STORE, 47710029905920, 47710029950975,
2856−ERASE, 47710029905920, 47710029905920,
2857−STORE, 47710029905920, 47710029959167,
2858−ERASE, 47710029905920, 47710029905920,
2859−STORE, 47710029905920, 47710029950975,
2860−STORE, 47710029950976, 47710029959167,
2861−ERASE, 47710029950976, 47710029950976,
2862−STORE, 47710029950976, 47710029959167,
2863−STORE, 47710029959168, 47710033010687,
2864−STORE, 47710030503936, 47710033010687,
2865−STORE, 47710029959168, 47710030503935,
2866−ERASE, 47710030503936, 47710030503936,
2867−STORE, 47710030503936, 47710032789503,
2868−STORE, 47710032789504, 47710033010687,
2869−STORE, 47710032199680, 47710032789503,
2870−STORE, 47710030503936, 47710032199679,
2871−ERASE, 47710030503936, 47710030503936,
2872−STORE, 47710030503936, 47710032199679,
2873−STORE, 47710032785408, 47710032789503,
2874−STORE, 47710032199680, 47710032785407,
2875−ERASE, 47710032199680, 47710032199680,
2876−STORE, 47710032199680, 47710032785407,
2877−STORE, 47710032994304, 47710033010687,
2878−STORE, 47710032789504, 47710032994303,
2879−ERASE, 47710032789504, 47710032789504,
2880−STORE, 47710032789504, 47710032994303,
2881−ERASE, 47710032994304, 47710032994304,
2882−STORE, 47710032994304, 47710033010687,
2883−STORE, 47710033010688, 47710034849791,
2884−STORE, 47710033149952, 47710034849791,
2885−STORE, 47710033010688, 47710033149951,
2886−ERASE, 47710033149952, 47710033149952,
2887−STORE, 47710033149952, 47710034808831,
2888−STORE, 47710034808832, 47710034849791,
2889−STORE, 47710034493440, 47710034808831,
2890−STORE, 47710033149952, 47710034493439,
2891−ERASE, 47710033149952, 47710033149952,
2892−STORE, 47710033149952, 47710034493439,
2893−STORE, 47710034804736, 47710034808831,
2894−STORE, 47710034493440, 47710034804735,
2895−ERASE, 47710034493440, 47710034493440,
2896−STORE, 47710034493440, 47710034804735,
2897−STORE, 47710034833408, 47710034849791,
2898−STORE, 47710034808832, 47710034833407,
2899−ERASE, 47710034808832, 47710034808832,
2900−STORE, 47710034808832, 47710034833407,
2901−ERASE, 47710034833408, 47710034833408,
2902−STORE, 47710034833408, 47710034849791,
2903−STORE, 47710034849792, 47710034984959,
2904−ERASE, 47710034849792, 47710034849792,
2905−STORE, 47710034849792, 47710034874367,
2906−STORE, 47710034874368, 47710034984959,
2907−STORE, 47710034935808, 47710034984959,
2908−STORE, 47710034874368, 47710034935807,
2909−ERASE, 47710034874368, 47710034874368,
2910−STORE, 47710034874368, 47710034935807,
2911−STORE, 47710034960384, 47710034984959,
2912−STORE, 47710034935808, 47710034960383,
2913−ERASE, 47710034935808, 47710034935808,
2914−STORE, 47710034935808, 47710034984959,
2915−ERASE, 47710034935808, 47710034935808,
2916−STORE, 47710034935808, 47710034960383,
2917−STORE, 47710034960384, 47710034984959,
2918−STORE, 47710034968576, 47710034984959,
2919−STORE, 47710034960384, 47710034968575,
2920−ERASE, 47710034960384, 47710034960384,
2921−STORE, 47710034960384, 47710034968575,
2922−ERASE, 47710034968576, 47710034968576,
2923−STORE, 47710034968576, 47710034984959,
2924−STORE, 47710034984960, 47710035005439,
2925−ERASE, 47710034984960, 47710034984960,
2926−STORE, 47710034984960, 47710034989055,
2927−STORE, 47710034989056, 47710035005439,
2928−STORE, 47710034993152, 47710035005439,
2929−STORE, 47710034989056, 47710034993151,
2930−ERASE, 47710034989056, 47710034989056,
2931−STORE, 47710034989056, 47710034993151,
2932−STORE, 47710034997248, 47710035005439,
2933−STORE, 47710034993152, 47710034997247,
2934−ERASE, 47710034993152, 47710034993152,
2935−STORE, 47710034993152, 47710035005439,
2936−ERASE, 47710034993152, 47710034993152,
2937−STORE, 47710034993152, 47710034997247,
2938−STORE, 47710034997248, 47710035005439,
2939−ERASE, 47710034997248, 47710034997248,
2940−STORE, 47710034997248, 47710035005439,
2941−STORE, 47710035005440, 47710035013631,
2942−ERASE, 47710034808832, 47710034808832,
2943−STORE, 47710034808832, 47710034825215,
2944−STORE, 47710034825216, 47710034833407,
2945−ERASE, 47710034997248, 47710034997248,
2946−STORE, 47710034997248, 47710035001343,
2947−STORE, 47710035001344, 47710035005439,
2948−ERASE, 47710034960384, 47710034960384,
2949−STORE, 47710034960384, 47710034964479,
2950−STORE, 47710034964480, 47710034968575,
2951−ERASE, 47710032789504, 47710032789504,
2952−STORE, 47710032789504, 47710032986111,
2953−STORE, 47710032986112, 47710032994303,
2954−ERASE, 47710029950976, 47710029950976,
2955−STORE, 47710029950976, 47710029955071,
2956−STORE, 47710029955072, 47710029959167,
2957−ERASE, 94844636766208, 94844636766208,
2958−STORE, 94844636766208, 94844636774399,
2959−STORE, 94844636774400, 94844636778495,
2960−ERASE, 139922765377536, 139922765377536,
2961−STORE, 139922765377536, 139922765381631,
2962−STORE, 139922765381632, 139922765385727,
2963−ERASE, 47710029778944, 47710029778944,
2964−STORE, 94844641775616, 94844641910783,
2965−STORE, 140737488347136, 140737488351231,
2966−STORE, 140732213886976, 140737488351231,
2967−ERASE, 140732213886976, 140732213886976,
2968−STORE, 140732213886976, 140732213891071,
2969−STORE, 94240508887040, 94240509059071,
2970−ERASE, 94240508887040, 94240508887040,
2971−STORE, 94240508887040, 94240508903423,
2972−STORE, 94240508903424, 94240509059071,
2973−ERASE, 94240508903424, 94240508903424,
2974−STORE, 94240508903424, 94240509005823,
2975−STORE, 94240509005824, 94240509046783,
2976−STORE, 94240509046784, 94240509059071,
2977−STORE, 140275106516992, 140275106689023,
2978−ERASE, 140275106516992, 140275106516992,
2979−STORE, 140275106516992, 140275106521087,
2980−STORE, 140275106521088, 140275106689023,
2981−ERASE, 140275106521088, 140275106521088,
2982−STORE, 140275106521088, 140275106643967,
2983−STORE, 140275106643968, 140275106676735,
2984−STORE, 140275106676736, 140275106684927,
2985−STORE, 140275106684928, 140275106689023,
2986−STORE, 140732213977088, 140732213981183,
2987−STORE, 140732213964800, 140732213977087,
2988−STORE, 47357688479744, 47357688487935,
2989−STORE, 47357688487936, 47357688496127,
2990−STORE, 47357688496128, 47357688659967,
2991−ERASE, 47357688496128, 47357688496128,
2992−STORE, 47357688496128, 47357688508415,
2993−STORE, 47357688508416, 47357688659967,
2994−STORE, 47357688606720, 47357688659967,
2995−STORE, 47357688508416, 47357688606719,
2996−ERASE, 47357688508416, 47357688508416,
2997−STORE, 47357688508416, 47357688606719,
2998−STORE, 47357688651776, 47357688659967,
2999−STORE, 47357688606720, 47357688651775,
3000−ERASE, 47357688606720, 47357688606720,
3001−STORE, 47357688606720, 47357688659967,
3002−ERASE, 47357688606720, 47357688606720,
3003−STORE, 47357688606720, 47357688651775,
3004−STORE, 47357688651776, 47357688659967,
3005−ERASE, 47357688651776, 47357688651776,
3006−STORE, 47357688651776, 47357688659967,
3007−STORE, 47357688659968, 47357691711487,
3008−STORE, 47357689204736, 47357691711487,
3009−STORE, 47357688659968, 47357689204735,
3010−ERASE, 47357689204736, 47357689204736,
3011−STORE, 47357689204736, 47357691490303,
3012−STORE, 47357691490304, 47357691711487,
3013−STORE, 47357690900480, 47357691490303,
3014−STORE, 47357689204736, 47357690900479,
3015−ERASE, 47357689204736, 47357689204736,
3016−STORE, 47357689204736, 47357690900479,
3017−STORE, 47357691486208, 47357691490303,
3018−STORE, 47357690900480, 47357691486207,
3019−ERASE, 47357690900480, 47357690900480,
3020−STORE, 47357690900480, 47357691486207,
3021−STORE, 47357691695104, 47357691711487,
3022−STORE, 47357691490304, 47357691695103,
3023−ERASE, 47357691490304, 47357691490304,
3024−STORE, 47357691490304, 47357691695103,
3025−ERASE, 47357691695104, 47357691695104,
3026−STORE, 47357691695104, 47357691711487,
3027−STORE, 47357691711488, 47357693550591,
3028−STORE, 47357691850752, 47357693550591,
3029−STORE, 47357691711488, 47357691850751,
3030−ERASE, 47357691850752, 47357691850752,
3031−STORE, 47357691850752, 47357693509631,
3032−STORE, 47357693509632, 47357693550591,
3033−STORE, 47357693194240, 47357693509631,
3034−STORE, 47357691850752, 47357693194239,
3035−ERASE, 47357691850752, 47357691850752,
3036−STORE, 47357691850752, 47357693194239,
3037−STORE, 47357693505536, 47357693509631,
3038−STORE, 47357693194240, 47357693505535,
3039−ERASE, 47357693194240, 47357693194240,
3040−STORE, 47357693194240, 47357693505535,
3041−STORE, 47357693534208, 47357693550591,
3042−STORE, 47357693509632, 47357693534207,
3043−ERASE, 47357693509632, 47357693509632,
3044−STORE, 47357693509632, 47357693534207,
3045−ERASE, 47357693534208, 47357693534208,
3046−STORE, 47357693534208, 47357693550591,
3047−STORE, 47357693550592, 47357693685759,
3048−ERASE, 47357693550592, 47357693550592,
3049−STORE, 47357693550592, 47357693575167,
3050−STORE, 47357693575168, 47357693685759,
3051−STORE, 47357693636608, 47357693685759,
3052−STORE, 47357693575168, 47357693636607,
3053−ERASE, 47357693575168, 47357693575168,
3054−STORE, 47357693575168, 47357693636607,
3055−STORE, 47357693661184, 47357693685759,
3056−STORE, 47357693636608, 47357693661183,
3057−ERASE, 47357693636608, 47357693636608,
3058−STORE, 47357693636608, 47357693685759,
3059−ERASE, 47357693636608, 47357693636608,
3060−STORE, 47357693636608, 47357693661183,
3061−STORE, 47357693661184, 47357693685759,
3062−STORE, 47357693669376, 47357693685759,
3063−STORE, 47357693661184, 47357693669375,
3064−ERASE, 47357693661184, 47357693661184,
3065−STORE, 47357693661184, 47357693669375,
3066−ERASE, 47357693669376, 47357693669376,
3067−STORE, 47357693669376, 47357693685759,
3068−STORE, 47357693685760, 47357693706239,
3069−ERASE, 47357693685760, 47357693685760,
3070−STORE, 47357693685760, 47357693689855,
3071−STORE, 47357693689856, 47357693706239,
3072−STORE, 47357693693952, 47357693706239,
3073−STORE, 47357693689856, 47357693693951,
3074−ERASE, 47357693689856, 47357693689856,
3075−STORE, 47357693689856, 47357693693951,
3076−STORE, 47357693698048, 47357693706239,
3077−STORE, 47357693693952, 47357693698047,
3078−ERASE, 47357693693952, 47357693693952,
3079−STORE, 47357693693952, 47357693706239,
3080−ERASE, 47357693693952, 47357693693952,
3081−STORE, 47357693693952, 47357693698047,
3082−STORE, 47357693698048, 47357693706239,
3083−ERASE, 47357693698048, 47357693698048,
3084−STORE, 47357693698048, 47357693706239,
3085−STORE, 47357693706240, 47357693714431,
3086−ERASE, 47357693509632, 47357693509632,
3087−STORE, 47357693509632, 47357693526015,
3088−STORE, 47357693526016, 47357693534207,
3089−ERASE, 47357693698048, 47357693698048,
3090−STORE, 47357693698048, 47357693702143,
3091−STORE, 47357693702144, 47357693706239,
3092−ERASE, 47357693661184, 47357693661184,
3093−STORE, 47357693661184, 47357693665279,
3094−STORE, 47357693665280, 47357693669375,
3095−ERASE, 47357691490304, 47357691490304,
3096−STORE, 47357691490304, 47357691686911,
3097−STORE, 47357691686912, 47357691695103,
3098−ERASE, 47357688651776, 47357688651776,
3099−STORE, 47357688651776, 47357688655871,
3100−STORE, 47357688655872, 47357688659967,
3101−ERASE, 94240509046784, 94240509046784,
3102−STORE, 94240509046784, 94240509054975,
3103−STORE, 94240509054976, 94240509059071,
3104−ERASE, 140275106676736, 140275106676736,
3105−STORE, 140275106676736, 140275106680831,
3106−STORE, 140275106680832, 140275106684927,
3107−ERASE, 47357688479744, 47357688479744,
3108−STORE, 94240518361088, 94240518496255,
3109−STORE, 140737488347136, 140737488351231,
3110−STORE, 140732688277504, 140737488351231,
3111−ERASE, 140732688277504, 140732688277504,
3112−STORE, 140732688277504, 140732688281599,
3113−STORE, 94629171351552, 94629172064255,
3114−ERASE, 94629171351552, 94629171351552,
3115−STORE, 94629171351552, 94629171400703,
3116−STORE, 94629171400704, 94629172064255,
3117−ERASE, 94629171400704, 94629171400704,
3118−STORE, 94629171400704, 94629171945471,
3119−STORE, 94629171945472, 94629172043775,
3120−STORE, 94629172043776, 94629172064255,
3121−STORE, 139770707644416, 139770707816447,
3122−ERASE, 139770707644416, 139770707644416,
3123−STORE, 139770707644416, 139770707648511,
3124−STORE, 139770707648512, 139770707816447,
3125−ERASE, 139770707648512, 139770707648512,
3126−STORE, 139770707648512, 139770707771391,
3127−STORE, 139770707771392, 139770707804159,
3128−STORE, 139770707804160, 139770707812351,
3129−STORE, 139770707812352, 139770707816447,
3130−STORE, 140732689121280, 140732689125375,
3131−STORE, 140732689108992, 140732689121279,
3132−STORE, 47862087352320, 47862087360511,
3133−STORE, 47862087360512, 47862087368703,
3134−STORE, 47862087368704, 47862087475199,
3135−STORE, 47862087385088, 47862087475199,
3136−STORE, 47862087368704, 47862087385087,
3137−ERASE, 47862087385088, 47862087385088,
3138−STORE, 47862087385088, 47862087458815,
3139−STORE, 47862087458816, 47862087475199,
3140−STORE, 47862087438336, 47862087458815,
3141−STORE, 47862087385088, 47862087438335,
3142−ERASE, 47862087385088, 47862087385088,
3143−STORE, 47862087385088, 47862087438335,
3144−STORE, 47862087454720, 47862087458815,
3145−STORE, 47862087438336, 47862087454719,
3146−ERASE, 47862087438336, 47862087438336,
3147−STORE, 47862087438336, 47862087454719,
3148−STORE, 47862087467008, 47862087475199,
3149−STORE, 47862087458816, 47862087467007,
3150−ERASE, 47862087458816, 47862087458816,
3151−STORE, 47862087458816, 47862087467007,
3152−ERASE, 47862087467008, 47862087467008,
3153−STORE, 47862087467008, 47862087475199,
3154−STORE, 47862087475200, 47862089314303,
3155−STORE, 47862087614464, 47862089314303,
3156−STORE, 47862087475200, 47862087614463,
3157−ERASE, 47862087614464, 47862087614464,
3158−STORE, 47862087614464, 47862089273343,
3159−STORE, 47862089273344, 47862089314303,
3160−STORE, 47862088957952, 47862089273343,
3161−STORE, 47862087614464, 47862088957951,
3162−ERASE, 47862087614464, 47862087614464,
3163−STORE, 47862087614464, 47862088957951,
3164−STORE, 47862089269248, 47862089273343,
3165−STORE, 47862088957952, 47862089269247,
3166−ERASE, 47862088957952, 47862088957952,
3167−STORE, 47862088957952, 47862089269247,
3168−STORE, 47862089297920, 47862089314303,
3169−STORE, 47862089273344, 47862089297919,
3170−ERASE, 47862089273344, 47862089273344,
3171−STORE, 47862089273344, 47862089297919,
3172−ERASE, 47862089297920, 47862089297920,
3173−STORE, 47862089297920, 47862089314303,
3174−STORE, 47862089297920, 47862089326591,
3175−ERASE, 47862089273344, 47862089273344,
3176−STORE, 47862089273344, 47862089289727,
3177−STORE, 47862089289728, 47862089297919,
3178−ERASE, 47862087458816, 47862087458816,
3179−STORE, 47862087458816, 47862087462911,
3180−STORE, 47862087462912, 47862087467007,
3181−ERASE, 94629172043776, 94629172043776,
3182−STORE, 94629172043776, 94629172060159,
3183−STORE, 94629172060160, 94629172064255,
3184−ERASE, 139770707804160, 139770707804160,
3185−STORE, 139770707804160, 139770707808255,
3186−STORE, 139770707808256, 139770707812351,
3187−ERASE, 47862087352320, 47862087352320,
3188−STORE, 94629197533184, 94629197668351,
3189−STORE, 140737488347136, 140737488351231,
3190−STORE, 140727540711424, 140737488351231,
3191−ERASE, 140727540711424, 140727540711424,
3192−STORE, 140727540711424, 140727540715519,
3193−STORE, 94299865313280, 94299866025983,
3194−ERASE, 94299865313280, 94299865313280,
3195−STORE, 94299865313280, 94299865362431,
3196−STORE, 94299865362432, 94299866025983,
3197−ERASE, 94299865362432, 94299865362432,
3198−STORE, 94299865362432, 94299865907199,
3199−STORE, 94299865907200, 94299866005503,
3200−STORE, 94299866005504, 94299866025983,
3201−STORE, 140680268763136, 140680268935167,
3202−ERASE, 140680268763136, 140680268763136,
3203−STORE, 140680268763136, 140680268767231,
3204−STORE, 140680268767232, 140680268935167,
3205−ERASE, 140680268767232, 140680268767232,
3206−STORE, 140680268767232, 140680268890111,
3207−STORE, 140680268890112, 140680268922879,
3208−STORE, 140680268922880, 140680268931071,
3209−STORE, 140680268931072, 140680268935167,
3210−STORE, 140727541424128, 140727541428223,
3211−STORE, 140727541411840, 140727541424127,
3212−STORE, 46952526233600, 46952526241791,
3213−STORE, 46952526241792, 46952526249983,
3214−STORE, 46952526249984, 46952526356479,
3215−STORE, 46952526266368, 46952526356479,
3216−STORE, 46952526249984, 46952526266367,
3217−ERASE, 46952526266368, 46952526266368,
3218−STORE, 46952526266368, 46952526340095,
3219−STORE, 46952526340096, 46952526356479,
3220−STORE, 46952526319616, 46952526340095,
3221−STORE, 46952526266368, 46952526319615,
3222−ERASE, 46952526266368, 46952526266368,
3223−STORE, 46952526266368, 46952526319615,
3224−STORE, 46952526336000, 46952526340095,
3225−STORE, 46952526319616, 46952526335999,
3226−ERASE, 46952526319616, 46952526319616,
3227−STORE, 46952526319616, 46952526335999,
3228−STORE, 46952526348288, 46952526356479,
3229−STORE, 46952526340096, 46952526348287,
3230−ERASE, 46952526340096, 46952526340096,
3231−STORE, 46952526340096, 46952526348287,
3232−ERASE, 46952526348288, 46952526348288,
3233−STORE, 46952526348288, 46952526356479,
3234−STORE, 46952526356480, 46952528195583,
3235−STORE, 46952526495744, 46952528195583,
3236−STORE, 46952526356480, 46952526495743,
3237−ERASE, 46952526495744, 46952526495744,
3238−STORE, 46952526495744, 46952528154623,
3239−STORE, 46952528154624, 46952528195583,
3240−STORE, 46952527839232, 46952528154623,
3241−STORE, 46952526495744, 46952527839231,
3242−ERASE, 46952526495744, 46952526495744,
3243−STORE, 46952526495744, 46952527839231,
3244−STORE, 46952528150528, 46952528154623,
3245−STORE, 46952527839232, 46952528150527,
3246−ERASE, 46952527839232, 46952527839232,
3247−STORE, 46952527839232, 46952528150527,
3248−STORE, 46952528179200, 46952528195583,
3249−STORE, 46952528154624, 46952528179199,
3250−ERASE, 46952528154624, 46952528154624,
3251−STORE, 46952528154624, 46952528179199,
3252−ERASE, 46952528179200, 46952528179200,
3253−STORE, 46952528179200, 46952528195583,
3254−STORE, 46952528179200, 46952528207871,
3255−ERASE, 46952528154624, 46952528154624,
3256−STORE, 46952528154624, 46952528171007,
3257−STORE, 46952528171008, 46952528179199,
3258−ERASE, 46952526340096, 46952526340096,
3259−STORE, 46952526340096, 46952526344191,
3260−STORE, 46952526344192, 46952526348287,
3261−ERASE, 94299866005504, 94299866005504,
3262−STORE, 94299866005504, 94299866021887,
3263−STORE, 94299866021888, 94299866025983,
3264−ERASE, 140680268922880, 140680268922880,
3265−STORE, 140680268922880, 140680268926975,
3266−STORE, 140680268926976, 140680268931071,
3267−ERASE, 46952526233600, 46952526233600,
3268−STORE, 140737488347136, 140737488351231,
3269−STORE, 140722874793984, 140737488351231,
3270−ERASE, 140722874793984, 140722874793984,
3271−STORE, 140722874793984, 140722874798079,
3272−STORE, 94448916213760, 94448916926463,
3273−ERASE, 94448916213760, 94448916213760,
3274−STORE, 94448916213760, 94448916262911,
3275−STORE, 94448916262912, 94448916926463,
3276−ERASE, 94448916262912, 94448916262912,
3277−STORE, 94448916262912, 94448916807679,
3278−STORE, 94448916807680, 94448916905983,
3279−STORE, 94448916905984, 94448916926463,
3280−STORE, 140389117046784, 140389117218815,
3281−ERASE, 140389117046784, 140389117046784,
3282−STORE, 140389117046784, 140389117050879,
3283−STORE, 140389117050880, 140389117218815,
3284−ERASE, 140389117050880, 140389117050880,
3285−STORE, 140389117050880, 140389117173759,
3286−STORE, 140389117173760, 140389117206527,
3287−STORE, 140389117206528, 140389117214719,
3288−STORE, 140389117214720, 140389117218815,
3289−STORE, 140722875297792, 140722875301887,
3290−STORE, 140722875285504, 140722875297791,
3291−STORE, 47243677949952, 47243677958143,
3292−STORE, 47243677958144, 47243677966335,
3293−STORE, 47243677966336, 47243678072831,
3294−STORE, 47243677982720, 47243678072831,
3295−STORE, 47243677966336, 47243677982719,
3296−ERASE, 47243677982720, 47243677982720,
3297−STORE, 47243677982720, 47243678056447,
3298−STORE, 47243678056448, 47243678072831,
3299−STORE, 47243678035968, 47243678056447,
3300−STORE, 47243677982720, 47243678035967,
3301−ERASE, 47243677982720, 47243677982720,
3302−STORE, 47243677982720, 47243678035967,
3303−STORE, 47243678052352, 47243678056447,
3304−STORE, 47243678035968, 47243678052351,
3305−ERASE, 47243678035968, 47243678035968,
3306−STORE, 47243678035968, 47243678052351,
3307−STORE, 47243678064640, 47243678072831,
3308−STORE, 47243678056448, 47243678064639,
3309−ERASE, 47243678056448, 47243678056448,
3310−STORE, 47243678056448, 47243678064639,
3311−ERASE, 47243678064640, 47243678064640,
3312−STORE, 47243678064640, 47243678072831,
3313−STORE, 47243678072832, 47243679911935,
3314−STORE, 47243678212096, 47243679911935,
3315−STORE, 47243678072832, 47243678212095,
3316−ERASE, 47243678212096, 47243678212096,
3317−STORE, 47243678212096, 47243679870975,
3318−STORE, 47243679870976, 47243679911935,
3319−STORE, 47243679555584, 47243679870975,
3320−STORE, 47243678212096, 47243679555583,
3321−ERASE, 47243678212096, 47243678212096,
3322−STORE, 47243678212096, 47243679555583,
3323−STORE, 47243679866880, 47243679870975,
3324−STORE, 47243679555584, 47243679866879,
3325−ERASE, 47243679555584, 47243679555584,
3326−STORE, 47243679555584, 47243679866879,
3327−STORE, 47243679895552, 47243679911935,
3328−STORE, 47243679870976, 47243679895551,
3329−ERASE, 47243679870976, 47243679870976,
3330−STORE, 47243679870976, 47243679895551,
3331−ERASE, 47243679895552, 47243679895552,
3332−STORE, 47243679895552, 47243679911935,
3333−STORE, 47243679895552, 47243679924223,
3334−ERASE, 47243679870976, 47243679870976,
3335−STORE, 47243679870976, 47243679887359,
3336−STORE, 47243679887360, 47243679895551,
3337−ERASE, 47243678056448, 47243678056448,
3338−STORE, 47243678056448, 47243678060543,
3339−STORE, 47243678060544, 47243678064639,
3340−ERASE, 94448916905984, 94448916905984,
3341−STORE, 94448916905984, 94448916922367,
3342−STORE, 94448916922368, 94448916926463,
3343−ERASE, 140389117206528, 140389117206528,
3344−STORE, 140389117206528, 140389117210623,
3345−STORE, 140389117210624, 140389117214719,
3346−ERASE, 47243677949952, 47243677949952,
3347−STORE, 140737488347136, 140737488351231,
3348−STORE, 140733068505088, 140737488351231,
3349−ERASE, 140733068505088, 140733068505088,
3350−STORE, 140733068505088, 140733068509183,
3351−STORE, 94207145750528, 94207146463231,
3352−ERASE, 94207145750528, 94207145750528,
3353−STORE, 94207145750528, 94207145799679,
3354−STORE, 94207145799680, 94207146463231,
3355−ERASE, 94207145799680, 94207145799680,
3356−STORE, 94207145799680, 94207146344447,
3357−STORE, 94207146344448, 94207146442751,
3358−STORE, 94207146442752, 94207146463231,
3359−STORE, 140684504911872, 140684505083903,
3360−ERASE, 140684504911872, 140684504911872,
3361−STORE, 140684504911872, 140684504915967,
3362−STORE, 140684504915968, 140684505083903,
3363−ERASE, 140684504915968, 140684504915968,
3364−STORE, 140684504915968, 140684505038847,
3365−STORE, 140684505038848, 140684505071615,
3366−STORE, 140684505071616, 140684505079807,
3367−STORE, 140684505079808, 140684505083903,
3368−STORE, 140733068607488, 140733068611583,
3369−STORE, 140733068595200, 140733068607487,
3370−STORE, 46948290084864, 46948290093055,
3371−STORE, 46948290093056, 46948290101247,
3372−STORE, 46948290101248, 46948290207743,
3373−STORE, 46948290117632, 46948290207743,
3374−STORE, 46948290101248, 46948290117631,
3375−ERASE, 46948290117632, 46948290117632,
3376−STORE, 46948290117632, 46948290191359,
3377−STORE, 46948290191360, 46948290207743,
3378−STORE, 46948290170880, 46948290191359,
3379−STORE, 46948290117632, 46948290170879,
3380−ERASE, 46948290117632, 46948290117632,
3381−STORE, 46948290117632, 46948290170879,
3382−STORE, 46948290187264, 46948290191359,
3383−STORE, 46948290170880, 46948290187263,
3384−ERASE, 46948290170880, 46948290170880,
3385−STORE, 46948290170880, 46948290187263,
3386−STORE, 46948290199552, 46948290207743,
3387−STORE, 46948290191360, 46948290199551,
3388−ERASE, 46948290191360, 46948290191360,
3389−STORE, 46948290191360, 46948290199551,
3390−ERASE, 46948290199552, 46948290199552,
3391−STORE, 46948290199552, 46948290207743,
3392−STORE, 46948290207744, 46948292046847,
3393−STORE, 46948290347008, 46948292046847,
3394−STORE, 46948290207744, 46948290347007,
3395−ERASE, 46948290347008, 46948290347008,
3396−STORE, 46948290347008, 46948292005887,
3397−STORE, 46948292005888, 46948292046847,
3398−STORE, 46948291690496, 46948292005887,
3399−STORE, 46948290347008, 46948291690495,
3400−ERASE, 46948290347008, 46948290347008,
3401−STORE, 46948290347008, 46948291690495,
3402−STORE, 46948292001792, 46948292005887,
3403−STORE, 46948291690496, 46948292001791,
3404−ERASE, 46948291690496, 46948291690496,
3405−STORE, 46948291690496, 46948292001791,
3406−STORE, 46948292030464, 46948292046847,
3407−STORE, 46948292005888, 46948292030463,
3408−ERASE, 46948292005888, 46948292005888,
3409−STORE, 46948292005888, 46948292030463,
3410−ERASE, 46948292030464, 46948292030464,
3411−STORE, 46948292030464, 46948292046847,
3412−STORE, 46948292030464, 46948292059135,
3413−ERASE, 46948292005888, 46948292005888,
3414−STORE, 46948292005888, 46948292022271,
3415−STORE, 46948292022272, 46948292030463,
3416−ERASE, 46948290191360, 46948290191360,
3417−STORE, 46948290191360, 46948290195455,
3418−STORE, 46948290195456, 46948290199551,
3419−ERASE, 94207146442752, 94207146442752,
3420−STORE, 94207146442752, 94207146459135,
3421−STORE, 94207146459136, 94207146463231,
3422−ERASE, 140684505071616, 140684505071616,
3423−STORE, 140684505071616, 140684505075711,
3424−STORE, 140684505075712, 140684505079807,
3425−ERASE, 46948290084864, 46948290084864,
3426−STORE, 140737488347136, 140737488351231,
3427−STORE, 140726367158272, 140737488351231,
3428−ERASE, 140726367158272, 140726367158272,
3429−STORE, 140726367158272, 140726367162367,
3430−STORE, 94436124106752, 94436124819455,
3431−ERASE, 94436124106752, 94436124106752,
3432−STORE, 94436124106752, 94436124155903,
3433−STORE, 94436124155904, 94436124819455,
3434−ERASE, 94436124155904, 94436124155904,
3435−STORE, 94436124155904, 94436124700671,
3436−STORE, 94436124700672, 94436124798975,
3437−STORE, 94436124798976, 94436124819455,
3438−STORE, 140049025044480, 140049025216511,
3439−ERASE, 140049025044480, 140049025044480,
3440−STORE, 140049025044480, 140049025048575,
3441−STORE, 140049025048576, 140049025216511,
3442−ERASE, 140049025048576, 140049025048576,
3443−STORE, 140049025048576, 140049025171455,
3444−STORE, 140049025171456, 140049025204223,
3445−STORE, 140049025204224, 140049025212415,
3446−STORE, 140049025212416, 140049025216511,
3447−STORE, 140726367256576, 140726367260671,
3448−STORE, 140726367244288, 140726367256575,
3449−STORE, 47583769952256, 47583769960447,
3450−STORE, 47583769960448, 47583769968639,
3451−STORE, 47583769968640, 47583770075135,
3452−STORE, 47583769985024, 47583770075135,
3453−STORE, 47583769968640, 47583769985023,
3454−ERASE, 47583769985024, 47583769985024,
3455−STORE, 47583769985024, 47583770058751,
3456−STORE, 47583770058752, 47583770075135,
3457−STORE, 47583770038272, 47583770058751,
3458−STORE, 47583769985024, 47583770038271,
3459−ERASE, 47583769985024, 47583769985024,
3460−STORE, 47583769985024, 47583770038271,
3461−STORE, 47583770054656, 47583770058751,
3462−STORE, 47583770038272, 47583770054655,
3463−ERASE, 47583770038272, 47583770038272,
3464−STORE, 47583770038272, 47583770054655,
3465−STORE, 47583770066944, 47583770075135,
3466−STORE, 47583770058752, 47583770066943,
3467−ERASE, 47583770058752, 47583770058752,
3468−STORE, 47583770058752, 47583770066943,
3469−ERASE, 47583770066944, 47583770066944,
3470−STORE, 47583770066944, 47583770075135,
3471−STORE, 47583770075136, 47583771914239,
3472−STORE, 47583770214400, 47583771914239,
3473−STORE, 47583770075136, 47583770214399,
3474−ERASE, 47583770214400, 47583770214400,
3475−STORE, 47583770214400, 47583771873279,
3476−STORE, 47583771873280, 47583771914239,
3477−STORE, 47583771557888, 47583771873279,
3478−STORE, 47583770214400, 47583771557887,
3479−ERASE, 47583770214400, 47583770214400,
3480−STORE, 47583770214400, 47583771557887,
3481−STORE, 47583771869184, 47583771873279,
3482−STORE, 47583771557888, 47583771869183,
3483−ERASE, 47583771557888, 47583771557888,
3484−STORE, 47583771557888, 47583771869183,
3485−STORE, 47583771897856, 47583771914239,
3486−STORE, 47583771873280, 47583771897855,
3487−ERASE, 47583771873280, 47583771873280,
3488−STORE, 47583771873280, 47583771897855,
3489−ERASE, 47583771897856, 47583771897856,
3490−STORE, 47583771897856, 47583771914239,
3491−STORE, 47583771897856, 47583771926527,
3492−ERASE, 47583771873280, 47583771873280,
3493−STORE, 47583771873280, 47583771889663,
3494−STORE, 47583771889664, 47583771897855,
3495−ERASE, 47583770058752, 47583770058752,
3496−STORE, 47583770058752, 47583770062847,
3497−STORE, 47583770062848, 47583770066943,
3498−ERASE, 94436124798976, 94436124798976,
3499−STORE, 94436124798976, 94436124815359,
3500−STORE, 94436124815360, 94436124819455,
3501−ERASE, 140049025204224, 140049025204224,
3502−STORE, 140049025204224, 140049025208319,
3503−STORE, 140049025208320, 140049025212415,
3504−ERASE, 47583769952256, 47583769952256,
3505−STORE, 140737488347136, 140737488351231,
3506−STORE, 140727116099584, 140737488351231,
3507−ERASE, 140727116099584, 140727116099584,
3508−STORE, 140727116099584, 140727116103679,
3509−STORE, 94166319734784, 94166320447487,
3510−ERASE, 94166319734784, 94166319734784,
3511−STORE, 94166319734784, 94166319783935,
3512−STORE, 94166319783936, 94166320447487,
3513−ERASE, 94166319783936, 94166319783936,
3514−STORE, 94166319783936, 94166320328703,
3515−STORE, 94166320328704, 94166320427007,
3516−STORE, 94166320427008, 94166320447487,
3517−STORE, 139976559542272, 139976559714303,
3518−ERASE, 139976559542272, 139976559542272,
3519−STORE, 139976559542272, 139976559546367,
3520−STORE, 139976559546368, 139976559714303,
3521−ERASE, 139976559546368, 139976559546368,
3522−STORE, 139976559546368, 139976559669247,
3523−STORE, 139976559669248, 139976559702015,
3524−STORE, 139976559702016, 139976559710207,
3525−STORE, 139976559710208, 139976559714303,
3526−STORE, 140727116222464, 140727116226559,
3527−STORE, 140727116210176, 140727116222463,
3528−STORE, 47656235454464, 47656235462655,
3529−STORE, 47656235462656, 47656235470847,
3530−STORE, 47656235470848, 47656235577343,
3531−STORE, 47656235487232, 47656235577343,
3532−STORE, 47656235470848, 47656235487231,
3533−ERASE, 47656235487232, 47656235487232,
3534−STORE, 47656235487232, 47656235560959,
3535−STORE, 47656235560960, 47656235577343,
3536−STORE, 47656235540480, 47656235560959,
3537−STORE, 47656235487232, 47656235540479,
3538−ERASE, 47656235487232, 47656235487232,
3539−STORE, 47656235487232, 47656235540479,
3540−STORE, 47656235556864, 47656235560959,
3541−STORE, 47656235540480, 47656235556863,
3542−ERASE, 47656235540480, 47656235540480,
3543−STORE, 47656235540480, 47656235556863,
3544−STORE, 47656235569152, 47656235577343,
3545−STORE, 47656235560960, 47656235569151,
3546−ERASE, 47656235560960, 47656235560960,
3547−STORE, 47656235560960, 47656235569151,
3548−ERASE, 47656235569152, 47656235569152,
3549−STORE, 47656235569152, 47656235577343,
3550−STORE, 47656235577344, 47656237416447,
3551−STORE, 47656235716608, 47656237416447,
3552−STORE, 47656235577344, 47656235716607,
3553−ERASE, 47656235716608, 47656235716608,
3554−STORE, 47656235716608, 47656237375487,
3555−STORE, 47656237375488, 47656237416447,
3556−STORE, 47656237060096, 47656237375487,
3557−STORE, 47656235716608, 47656237060095,
3558−ERASE, 47656235716608, 47656235716608,
3559−STORE, 47656235716608, 47656237060095,
3560−STORE, 47656237371392, 47656237375487,
3561−STORE, 47656237060096, 47656237371391,
3562−ERASE, 47656237060096, 47656237060096,
3563−STORE, 47656237060096, 47656237371391,
3564−STORE, 47656237400064, 47656237416447,
3565−STORE, 47656237375488, 47656237400063,
3566−ERASE, 47656237375488, 47656237375488,
3567−STORE, 47656237375488, 47656237400063,
3568−ERASE, 47656237400064, 47656237400064,
3569−STORE, 47656237400064, 47656237416447,
3570−STORE, 47656237400064, 47656237428735,
3571−ERASE, 47656237375488, 47656237375488,
3572−STORE, 47656237375488, 47656237391871,
3573−STORE, 47656237391872, 47656237400063,
3574−ERASE, 47656235560960, 47656235560960,
3575−STORE, 47656235560960, 47656235565055,
3576−STORE, 47656235565056, 47656235569151,
3577−ERASE, 94166320427008, 94166320427008,
3578−STORE, 94166320427008, 94166320443391,
3579−STORE, 94166320443392, 94166320447487,
3580−ERASE, 139976559702016, 139976559702016,
3581−STORE, 139976559702016, 139976559706111,
3582−STORE, 139976559706112, 139976559710207,
3583−ERASE, 47656235454464, 47656235454464,
3584−STORE, 94166332153856, 94166332289023,
3585−STORE, 140737488347136, 140737488351231,
3586−STORE, 140726412816384, 140737488351231,
3587−ERASE, 140726412816384, 140726412816384,
3588−STORE, 140726412816384, 140726412820479,
3589−STORE, 94094884507648, 94094885220351,
3590−ERASE, 94094884507648, 94094884507648,
3591−STORE, 94094884507648, 94094884556799,
3592−STORE, 94094884556800, 94094885220351,
3593−ERASE, 94094884556800, 94094884556800,
3594−STORE, 94094884556800, 94094885101567,
3595−STORE, 94094885101568, 94094885199871,
3596−STORE, 94094885199872, 94094885220351,
3597−STORE, 139773773938688, 139773774110719,
3598−ERASE, 139773773938688, 139773773938688,
3599−STORE, 139773773938688, 139773773942783,
3600−STORE, 139773773942784, 139773774110719,
3601−ERASE, 139773773942784, 139773773942784,
3602−STORE, 139773773942784, 139773774065663,
3603−STORE, 139773774065664, 139773774098431,
3604−STORE, 139773774098432, 139773774106623,
3605−STORE, 139773774106624, 139773774110719,
3606−STORE, 140726412963840, 140726412967935,
3607−STORE, 140726412951552, 140726412963839,
3608−STORE, 47859021058048, 47859021066239,
3609−STORE, 47859021066240, 47859021074431,
3610−STORE, 47859021074432, 47859021180927,
3611−STORE, 47859021090816, 47859021180927,
3612−STORE, 47859021074432, 47859021090815,
3613−ERASE, 47859021090816, 47859021090816,
3614−STORE, 47859021090816, 47859021164543,
3615−STORE, 47859021164544, 47859021180927,
3616−STORE, 47859021144064, 47859021164543,
3617−STORE, 47859021090816, 47859021144063,
3618−ERASE, 47859021090816, 47859021090816,
3619−STORE, 47859021090816, 47859021144063,
3620−STORE, 47859021160448, 47859021164543,
3621−STORE, 47859021144064, 47859021160447,
3622−ERASE, 47859021144064, 47859021144064,
3623−STORE, 47859021144064, 47859021160447,
3624−STORE, 47859021172736, 47859021180927,
3625−STORE, 47859021164544, 47859021172735,
3626−ERASE, 47859021164544, 47859021164544,
3627−STORE, 47859021164544, 47859021172735,
3628−ERASE, 47859021172736, 47859021172736,
3629−STORE, 47859021172736, 47859021180927,
3630−STORE, 47859021180928, 47859023020031,
3631−STORE, 47859021320192, 47859023020031,
3632−STORE, 47859021180928, 47859021320191,
3633−ERASE, 47859021320192, 47859021320192,
3634−STORE, 47859021320192, 47859022979071,
3635−STORE, 47859022979072, 47859023020031,
3636−STORE, 47859022663680, 47859022979071,
3637−STORE, 47859021320192, 47859022663679,
3638−ERASE, 47859021320192, 47859021320192,
3639−STORE, 47859021320192, 47859022663679,
3640−STORE, 47859022974976, 47859022979071,
3641−STORE, 47859022663680, 47859022974975,
3642−ERASE, 47859022663680, 47859022663680,
3643−STORE, 47859022663680, 47859022974975,
3644−STORE, 47859023003648, 47859023020031,
3645−STORE, 47859022979072, 47859023003647,
3646−ERASE, 47859022979072, 47859022979072,
3647−STORE, 47859022979072, 47859023003647,
3648−ERASE, 47859023003648, 47859023003648,
3649−STORE, 47859023003648, 47859023020031,
3650−STORE, 47859023003648, 47859023032319,
3651−ERASE, 47859022979072, 47859022979072,
3652−STORE, 47859022979072, 47859022995455,
3653−STORE, 47859022995456, 47859023003647,
3654−ERASE, 47859021164544, 47859021164544,
3655−STORE, 47859021164544, 47859021168639,
3656−STORE, 47859021168640, 47859021172735,
3657−ERASE, 94094885199872, 94094885199872,
3658−STORE, 94094885199872, 94094885216255,
3659−STORE, 94094885216256, 94094885220351,
3660−ERASE, 139773774098432, 139773774098432,
3661−STORE, 139773774098432, 139773774102527,
3662−STORE, 139773774102528, 139773774106623,
3663−ERASE, 47859021058048, 47859021058048,
3664−STORE, 94094901108736, 94094901243903,
3665−STORE, 140737488347136, 140737488351231,
3666−STORE, 140736567963648, 140737488351231,
3667−ERASE, 140736567963648, 140736567963648,
3668−STORE, 140736567963648, 140736567967743,
3669−STORE, 94924425748480, 94924426461183,
3670−ERASE, 94924425748480, 94924425748480,
3671−STORE, 94924425748480, 94924425797631,
3672−STORE, 94924425797632, 94924426461183,
3673−ERASE, 94924425797632, 94924425797632,
3674−STORE, 94924425797632, 94924426342399,
3675−STORE, 94924426342400, 94924426440703,
3676−STORE, 94924426440704, 94924426461183,
3677−STORE, 140042126319616, 140042126491647,
3678−ERASE, 140042126319616, 140042126319616,
3679−STORE, 140042126319616, 140042126323711,
3680−STORE, 140042126323712, 140042126491647,
3681−ERASE, 140042126323712, 140042126323712,
3682−STORE, 140042126323712, 140042126446591,
3683−STORE, 140042126446592, 140042126479359,
3684−STORE, 140042126479360, 140042126487551,
3685−STORE, 140042126487552, 140042126491647,
3686−STORE, 140736568672256, 140736568676351,
3687−STORE, 140736568659968, 140736568672255,
3688−STORE, 47590668677120, 47590668685311,
3689−STORE, 47590668685312, 47590668693503,
3690−STORE, 47590668693504, 47590668799999,
3691−STORE, 47590668709888, 47590668799999,
3692−STORE, 47590668693504, 47590668709887,
3693−ERASE, 47590668709888, 47590668709888,
3694−STORE, 47590668709888, 47590668783615,
3695−STORE, 47590668783616, 47590668799999,
3696−STORE, 47590668763136, 47590668783615,
3697−STORE, 47590668709888, 47590668763135,
3698−ERASE, 47590668709888, 47590668709888,
3699−STORE, 47590668709888, 47590668763135,
3700−STORE, 47590668779520, 47590668783615,
3701−STORE, 47590668763136, 47590668779519,
3702−ERASE, 47590668763136, 47590668763136,
3703−STORE, 47590668763136, 47590668779519,
3704−STORE, 47590668791808, 47590668799999,
3705−STORE, 47590668783616, 47590668791807,
3706−ERASE, 47590668783616, 47590668783616,
3707−STORE, 47590668783616, 47590668791807,
3708−ERASE, 47590668791808, 47590668791808,
3709−STORE, 47590668791808, 47590668799999,
3710−STORE, 47590668800000, 47590670639103,
3711−STORE, 47590668939264, 47590670639103,
3712−STORE, 47590668800000, 47590668939263,
3713−ERASE, 47590668939264, 47590668939264,
3714−STORE, 47590668939264, 47590670598143,
3715−STORE, 47590670598144, 47590670639103,
3716−STORE, 47590670282752, 47590670598143,
3717−STORE, 47590668939264, 47590670282751,
3718−ERASE, 47590668939264, 47590668939264,
3719−STORE, 47590668939264, 47590670282751,
3720−STORE, 47590670594048, 47590670598143,
3721−STORE, 47590670282752, 47590670594047,
3722−ERASE, 47590670282752, 47590670282752,
3723−STORE, 47590670282752, 47590670594047,
3724−STORE, 47590670622720, 47590670639103,
3725−STORE, 47590670598144, 47590670622719,
3726−ERASE, 47590670598144, 47590670598144,
3727−STORE, 47590670598144, 47590670622719,
3728−ERASE, 47590670622720, 47590670622720,
3729−STORE, 47590670622720, 47590670639103,
3730−STORE, 47590670622720, 47590670651391,
3731−ERASE, 47590670598144, 47590670598144,
3732−STORE, 47590670598144, 47590670614527,
3733−STORE, 47590670614528, 47590670622719,
3734−ERASE, 47590668783616, 47590668783616,
3735−STORE, 47590668783616, 47590668787711,
3736−STORE, 47590668787712, 47590668791807,
3737−ERASE, 94924426440704, 94924426440704,
3738−STORE, 94924426440704, 94924426457087,
3739−STORE, 94924426457088, 94924426461183,
3740−ERASE, 140042126479360, 140042126479360,
3741−STORE, 140042126479360, 140042126483455,
3742−STORE, 140042126483456, 140042126487551,
3743−ERASE, 47590668677120, 47590668677120,
3744−STORE, 140737488347136, 140737488351231,
3745−STORE, 140733281439744, 140737488351231,
3746−ERASE, 140733281439744, 140733281439744,
3747−STORE, 140733281439744, 140733281443839,
3748−STORE, 94490667069440, 94490667782143,
3749−ERASE, 94490667069440, 94490667069440,
3750−STORE, 94490667069440, 94490667118591,
3751−STORE, 94490667118592, 94490667782143,
3752−ERASE, 94490667118592, 94490667118592,
3753−STORE, 94490667118592, 94490667663359,
3754−STORE, 94490667663360, 94490667761663,
3755−STORE, 94490667761664, 94490667782143,
3756−STORE, 139878215118848, 139878215290879,
3757−ERASE, 139878215118848, 139878215118848,
3758−STORE, 139878215118848, 139878215122943,
3759−STORE, 139878215122944, 139878215290879,
3760−ERASE, 139878215122944, 139878215122944,
3761−STORE, 139878215122944, 139878215245823,
3762−STORE, 139878215245824, 139878215278591,
3763−STORE, 139878215278592, 139878215286783,
3764−STORE, 139878215286784, 139878215290879,
3765−STORE, 140733281464320, 140733281468415,
3766−STORE, 140733281452032, 140733281464319,
3767−STORE, 47754579877888, 47754579886079,
3768−STORE, 47754579886080, 47754579894271,
3769−STORE, 47754579894272, 47754580000767,
3770−STORE, 47754579910656, 47754580000767,
3771−STORE, 47754579894272, 47754579910655,
3772−ERASE, 47754579910656, 47754579910656,
3773−STORE, 47754579910656, 47754579984383,
3774−STORE, 47754579984384, 47754580000767,
3775−STORE, 47754579963904, 47754579984383,
3776−STORE, 47754579910656, 47754579963903,
3777−ERASE, 47754579910656, 47754579910656,
3778−STORE, 47754579910656, 47754579963903,
3779−STORE, 47754579980288, 47754579984383,
3780−STORE, 47754579963904, 47754579980287,
3781−ERASE, 47754579963904, 47754579963904,
3782−STORE, 47754579963904, 47754579980287,
3783−STORE, 47754579992576, 47754580000767,
3784−STORE, 47754579984384, 47754579992575,
3785−ERASE, 47754579984384, 47754579984384,
3786−STORE, 47754579984384, 47754579992575,
3787−ERASE, 47754579992576, 47754579992576,
3788−STORE, 47754579992576, 47754580000767,
3789−STORE, 47754580000768, 47754581839871,
3790−STORE, 47754580140032, 47754581839871,
3791−STORE, 47754580000768, 47754580140031,
3792−ERASE, 47754580140032, 47754580140032,
3793−STORE, 47754580140032, 47754581798911,
3794−STORE, 47754581798912, 47754581839871,
3795−STORE, 47754581483520, 47754581798911,
3796−STORE, 47754580140032, 47754581483519,
3797−ERASE, 47754580140032, 47754580140032,
3798−STORE, 47754580140032, 47754581483519,
3799−STORE, 47754581794816, 47754581798911,
3800−STORE, 47754581483520, 47754581794815,
3801−ERASE, 47754581483520, 47754581483520,
3802−STORE, 47754581483520, 47754581794815,
3803−STORE, 47754581823488, 47754581839871,
3804−STORE, 47754581798912, 47754581823487,
3805−ERASE, 47754581798912, 47754581798912,
3806−STORE, 47754581798912, 47754581823487,
3807−ERASE, 47754581823488, 47754581823488,
3808−STORE, 47754581823488, 47754581839871,
3809−STORE, 47754581823488, 47754581852159,
3810−ERASE, 47754581798912, 47754581798912,
3811−STORE, 47754581798912, 47754581815295,
3812−STORE, 47754581815296, 47754581823487,
3813−ERASE, 47754579984384, 47754579984384,
3814−STORE, 47754579984384, 47754579988479,
3815−STORE, 47754579988480, 47754579992575,
3816−ERASE, 94490667761664, 94490667761664,
3817−STORE, 94490667761664, 94490667778047,
3818−STORE, 94490667778048, 94490667782143,
3819−ERASE, 139878215278592, 139878215278592,
3820−STORE, 139878215278592, 139878215282687,
3821−STORE, 139878215282688, 139878215286783,
3822−ERASE, 47754579877888, 47754579877888,
3823−STORE, 94490669649920, 94490669785087,
3824−STORE, 140737488347136, 140737488351231,
3825−STORE, 140735382188032, 140737488351231,
3826−ERASE, 140735382188032, 140735382188032,
3827−STORE, 140735382188032, 140735382192127,
3828−STORE, 94150181302272, 94150182014975,
3829−ERASE, 94150181302272, 94150181302272,
3830−STORE, 94150181302272, 94150181351423,
3831−STORE, 94150181351424, 94150182014975,
3832−ERASE, 94150181351424, 94150181351424,
3833−STORE, 94150181351424, 94150181896191,
3834−STORE, 94150181896192, 94150181994495,
3835−STORE, 94150181994496, 94150182014975,
3836−STORE, 139679752458240, 139679752630271,
3837−ERASE, 139679752458240, 139679752458240,
3838−STORE, 139679752458240, 139679752462335,
3839−STORE, 139679752462336, 139679752630271,
3840−ERASE, 139679752462336, 139679752462336,
3841−STORE, 139679752462336, 139679752585215,
3842−STORE, 139679752585216, 139679752617983,
3843−STORE, 139679752617984, 139679752626175,
3844−STORE, 139679752626176, 139679752630271,
3845−STORE, 140735382536192, 140735382540287,
3846−STORE, 140735382523904, 140735382536191,
3847−STORE, 47953042538496, 47953042546687,
3848−STORE, 47953042546688, 47953042554879,
3849−STORE, 47953042554880, 47953042661375,
3850−STORE, 47953042571264, 47953042661375,
3851−STORE, 47953042554880, 47953042571263,
3852−ERASE, 47953042571264, 47953042571264,
3853−STORE, 47953042571264, 47953042644991,
3854−STORE, 47953042644992, 47953042661375,
3855−STORE, 47953042624512, 47953042644991,
3856−STORE, 47953042571264, 47953042624511,
3857−ERASE, 47953042571264, 47953042571264,
3858−STORE, 47953042571264, 47953042624511,
3859−STORE, 47953042640896, 47953042644991,
3860−STORE, 47953042624512, 47953042640895,
3861−ERASE, 47953042624512, 47953042624512,
3862−STORE, 47953042624512, 47953042640895,
3863−STORE, 47953042653184, 47953042661375,
3864−STORE, 47953042644992, 47953042653183,
3865−ERASE, 47953042644992, 47953042644992,
3866−STORE, 47953042644992, 47953042653183,
3867−ERASE, 47953042653184, 47953042653184,
3868−STORE, 47953042653184, 47953042661375,
3869−STORE, 47953042661376, 47953044500479,
3870−STORE, 47953042800640, 47953044500479,
3871−STORE, 47953042661376, 47953042800639,
3872−ERASE, 47953042800640, 47953042800640,
3873−STORE, 47953042800640, 47953044459519,
3874−STORE, 47953044459520, 47953044500479,
3875−STORE, 47953044144128, 47953044459519,
3876−STORE, 47953042800640, 47953044144127,
3877−ERASE, 47953042800640, 47953042800640,
3878−STORE, 47953042800640, 47953044144127,
3879−STORE, 47953044455424, 47953044459519,
3880−STORE, 47953044144128, 47953044455423,
3881−ERASE, 47953044144128, 47953044144128,
3882−STORE, 47953044144128, 47953044455423,
3883−STORE, 47953044484096, 47953044500479,
3884−STORE, 47953044459520, 47953044484095,
3885−ERASE, 47953044459520, 47953044459520,
3886−STORE, 47953044459520, 47953044484095,
3887−ERASE, 47953044484096, 47953044484096,
3888−STORE, 47953044484096, 47953044500479,
3889−STORE, 47953044484096, 47953044512767,
3890−ERASE, 47953044459520, 47953044459520,
3891−STORE, 47953044459520, 47953044475903,
3892−STORE, 47953044475904, 47953044484095,
3893−ERASE, 47953042644992, 47953042644992,
3894−STORE, 47953042644992, 47953042649087,
3895−STORE, 47953042649088, 47953042653183,
3896−ERASE, 94150181994496, 94150181994496,
3897−STORE, 94150181994496, 94150182010879,
3898−STORE, 94150182010880, 94150182014975,
3899−ERASE, 139679752617984, 139679752617984,
3900−STORE, 139679752617984, 139679752622079,
3901−STORE, 139679752622080, 139679752626175,
3902−ERASE, 47953042538496, 47953042538496,
3903−STORE, 140737488347136, 140737488351231,
3904−STORE, 140737044123648, 140737488351231,
3905−ERASE, 140737044123648, 140737044123648,
3906−STORE, 140737044123648, 140737044127743,
3907−STORE, 94425324294144, 94425325006847,
3908−ERASE, 94425324294144, 94425324294144,
3909−STORE, 94425324294144, 94425324343295,
3910−STORE, 94425324343296, 94425325006847,
3911−ERASE, 94425324343296, 94425324343296,
3912−STORE, 94425324343296, 94425324888063,
3913−STORE, 94425324888064, 94425324986367,
3914−STORE, 94425324986368, 94425325006847,
3915−STORE, 140382015016960, 140382015188991,
3916−ERASE, 140382015016960, 140382015016960,
3917−STORE, 140382015016960, 140382015021055,
3918−STORE, 140382015021056, 140382015188991,
3919−ERASE, 140382015021056, 140382015021056,
3920−STORE, 140382015021056, 140382015143935,
3921−STORE, 140382015143936, 140382015176703,
3922−STORE, 140382015176704, 140382015184895,
3923−STORE, 140382015184896, 140382015188991,
3924−STORE, 140737045585920, 140737045590015,
3925−STORE, 140737045573632, 140737045585919,
3926−STORE, 47250779979776, 47250779987967,
3927−STORE, 47250779987968, 47250779996159,
3928−STORE, 47250779996160, 47250780102655,
3929−STORE, 47250780012544, 47250780102655,
3930−STORE, 47250779996160, 47250780012543,
3931−ERASE, 47250780012544, 47250780012544,
3932−STORE, 47250780012544, 47250780086271,
3933−STORE, 47250780086272, 47250780102655,
3934−STORE, 47250780065792, 47250780086271,
3935−STORE, 47250780012544, 47250780065791,
3936−ERASE, 47250780012544, 47250780012544,
3937−STORE, 47250780012544, 47250780065791,
3938−STORE, 47250780082176, 47250780086271,
3939−STORE, 47250780065792, 47250780082175,
3940−ERASE, 47250780065792, 47250780065792,
3941−STORE, 47250780065792, 47250780082175,
3942−STORE, 47250780094464, 47250780102655,
3943−STORE, 47250780086272, 47250780094463,
3944−ERASE, 47250780086272, 47250780086272,
3945−STORE, 47250780086272, 47250780094463,
3946−ERASE, 47250780094464, 47250780094464,
3947−STORE, 47250780094464, 47250780102655,
3948−STORE, 47250780102656, 47250781941759,
3949−STORE, 47250780241920, 47250781941759,
3950−STORE, 47250780102656, 47250780241919,
3951−ERASE, 47250780241920, 47250780241920,
3952−STORE, 47250780241920, 47250781900799,
3953−STORE, 47250781900800, 47250781941759,
3954−STORE, 47250781585408, 47250781900799,
3955−STORE, 47250780241920, 47250781585407,
3956−ERASE, 47250780241920, 47250780241920,
3957−STORE, 47250780241920, 47250781585407,
3958−STORE, 47250781896704, 47250781900799,
3959−STORE, 47250781585408, 47250781896703,
3960−ERASE, 47250781585408, 47250781585408,
3961−STORE, 47250781585408, 47250781896703,
3962−STORE, 47250781925376, 47250781941759,
3963−STORE, 47250781900800, 47250781925375,
3964−ERASE, 47250781900800, 47250781900800,
3965−STORE, 47250781900800, 47250781925375,
3966−ERASE, 47250781925376, 47250781925376,
3967−STORE, 47250781925376, 47250781941759,
3968−STORE, 47250781925376, 47250781954047,
3969−ERASE, 47250781900800, 47250781900800,
3970−STORE, 47250781900800, 47250781917183,
3971−STORE, 47250781917184, 47250781925375,
3972−ERASE, 47250780086272, 47250780086272,
3973−STORE, 47250780086272, 47250780090367,
3974−STORE, 47250780090368, 47250780094463,
3975−ERASE, 94425324986368, 94425324986368,
3976−STORE, 94425324986368, 94425325002751,
3977−STORE, 94425325002752, 94425325006847,
3978−ERASE, 140382015176704, 140382015176704,
3979−STORE, 140382015176704, 140382015180799,
3980−STORE, 140382015180800, 140382015184895,
3981−ERASE, 47250779979776, 47250779979776,
3982−STORE, 94425351438336, 94425351573503,
3983−STORE, 140737488347136, 140737488351231,
3984−STORE, 140736801144832, 140737488351231,
3985−ERASE, 140736801144832, 140736801144832,
3986−STORE, 140736801144832, 140736801148927,
3987−STORE, 94629429358592, 94629430071295,
3988−ERASE, 94629429358592, 94629429358592,
3989−STORE, 94629429358592, 94629429407743,
3990−STORE, 94629429407744, 94629430071295,
3991−ERASE, 94629429407744, 94629429407744,
3992−STORE, 94629429407744, 94629429952511,
3993−STORE, 94629429952512, 94629430050815,
3994−STORE, 94629430050816, 94629430071295,
3995−STORE, 139801685483520, 139801685655551,
3996−ERASE, 139801685483520, 139801685483520,
3997−STORE, 139801685483520, 139801685487615,
3998−STORE, 139801685487616, 139801685655551,
3999−ERASE, 139801685487616, 139801685487616,
4000−STORE, 139801685487616, 139801685610495,
4001−STORE, 139801685610496, 139801685643263,
4002−STORE, 139801685643264, 139801685651455,
4003−STORE, 139801685651456, 139801685655551,
4004−STORE, 140736801198080, 140736801202175,
4005−STORE, 140736801185792, 140736801198079,
4006−STORE, 47831109513216, 47831109521407,
4007−STORE, 47831109521408, 47831109529599,
4008−STORE, 47831109529600, 47831109636095,
4009−STORE, 47831109545984, 47831109636095,
4010−STORE, 47831109529600, 47831109545983,
4011−ERASE, 47831109545984, 47831109545984,
4012−STORE, 47831109545984, 47831109619711,
4013−STORE, 47831109619712, 47831109636095,
4014−STORE, 47831109599232, 47831109619711,
4015−STORE, 47831109545984, 47831109599231,
4016−ERASE, 47831109545984, 47831109545984,
4017−STORE, 47831109545984, 47831109599231,
4018−STORE, 47831109615616, 47831109619711,
4019−STORE, 47831109599232, 47831109615615,
4020−ERASE, 47831109599232, 47831109599232,
4021−STORE, 47831109599232, 47831109615615,
4022−STORE, 47831109627904, 47831109636095,
4023−STORE, 47831109619712, 47831109627903,
4024−ERASE, 47831109619712, 47831109619712,
4025−STORE, 47831109619712, 47831109627903,
4026−ERASE, 47831109627904, 47831109627904,
4027−STORE, 47831109627904, 47831109636095,
4028−STORE, 47831109636096, 47831111475199,
4029−STORE, 47831109775360, 47831111475199,
4030−STORE, 47831109636096, 47831109775359,
4031−ERASE, 47831109775360, 47831109775360,
4032−STORE, 47831109775360, 47831111434239,
4033−STORE, 47831111434240, 47831111475199,
4034−STORE, 47831111118848, 47831111434239,
4035−STORE, 47831109775360, 47831111118847,
4036−ERASE, 47831109775360, 47831109775360,
4037−STORE, 47831109775360, 47831111118847,
4038−STORE, 47831111430144, 47831111434239,
4039−STORE, 47831111118848, 47831111430143,
4040−ERASE, 47831111118848, 47831111118848,
4041−STORE, 47831111118848, 47831111430143,
4042−STORE, 47831111458816, 47831111475199,
4043−STORE, 47831111434240, 47831111458815,
4044−ERASE, 47831111434240, 47831111434240,
4045−STORE, 47831111434240, 47831111458815,
4046−ERASE, 47831111458816, 47831111458816,
4047−STORE, 47831111458816, 47831111475199,
4048−STORE, 47831111458816, 47831111487487,
4049−ERASE, 47831111434240, 47831111434240,
4050−STORE, 47831111434240, 47831111450623,
4051−STORE, 47831111450624, 47831111458815,
4052−ERASE, 47831109619712, 47831109619712,
4053−STORE, 47831109619712, 47831109623807,
4054−STORE, 47831109623808, 47831109627903,
4055−ERASE, 94629430050816, 94629430050816,
4056−STORE, 94629430050816, 94629430067199,
4057−STORE, 94629430067200, 94629430071295,
4058−ERASE, 139801685643264, 139801685643264,
4059−STORE, 139801685643264, 139801685647359,
4060−STORE, 139801685647360, 139801685651455,
4061−ERASE, 47831109513216, 47831109513216,
4062−STORE, 140737488347136, 140737488351231,
4063−STORE, 140729419612160, 140737488351231,
4064−ERASE, 140729419612160, 140729419612160,
4065−STORE, 140729419612160, 140729419616255,
4066−STORE, 94443354148864, 94443354861567,
4067−ERASE, 94443354148864, 94443354148864,
4068−STORE, 94443354148864, 94443354198015,
4069−STORE, 94443354198016, 94443354861567,
4070−ERASE, 94443354198016, 94443354198016,
4071−STORE, 94443354198016, 94443354742783,
4072−STORE, 94443354742784, 94443354841087,
4073−STORE, 94443354841088, 94443354861567,
4074−STORE, 139741700038656, 139741700210687,
4075−ERASE, 139741700038656, 139741700038656,
4076−STORE, 139741700038656, 139741700042751,
4077−STORE, 139741700042752, 139741700210687,
4078−ERASE, 139741700042752, 139741700042752,
4079−STORE, 139741700042752, 139741700165631,
4080−STORE, 139741700165632, 139741700198399,
4081−STORE, 139741700198400, 139741700206591,
4082−STORE, 139741700206592, 139741700210687,
4083−STORE, 140729420574720, 140729420578815,
4084−STORE, 140729420562432, 140729420574719,
4085−STORE, 47891094958080, 47891094966271,
4086−STORE, 47891094966272, 47891094974463,
4087−STORE, 47891094974464, 47891095080959,
4088−STORE, 47891094990848, 47891095080959,
4089−STORE, 47891094974464, 47891094990847,
4090−ERASE, 47891094990848, 47891094990848,
4091−STORE, 47891094990848, 47891095064575,
4092−STORE, 47891095064576, 47891095080959,
4093−STORE, 47891095044096, 47891095064575,
4094−STORE, 47891094990848, 47891095044095,
4095−ERASE, 47891094990848, 47891094990848,
4096−STORE, 47891094990848, 47891095044095,
4097−STORE, 47891095060480, 47891095064575,
4098−STORE, 47891095044096, 47891095060479,
4099−ERASE, 47891095044096, 47891095044096,
4100−STORE, 47891095044096, 47891095060479,
4101−STORE, 47891095072768, 47891095080959,
4102−STORE, 47891095064576, 47891095072767,
4103−ERASE, 47891095064576, 47891095064576,
4104−STORE, 47891095064576, 47891095072767,
4105−ERASE, 47891095072768, 47891095072768,
4106−STORE, 47891095072768, 47891095080959,
4107−STORE, 47891095080960, 47891096920063,
4108−STORE, 47891095220224, 47891096920063,
4109−STORE, 47891095080960, 47891095220223,
4110−ERASE, 47891095220224, 47891095220224,
4111−STORE, 47891095220224, 47891096879103,
4112−STORE, 47891096879104, 47891096920063,
4113−STORE, 47891096563712, 47891096879103,
4114−STORE, 47891095220224, 47891096563711,
4115−ERASE, 47891095220224, 47891095220224,
4116−STORE, 47891095220224, 47891096563711,
4117−STORE, 47891096875008, 47891096879103,
4118−STORE, 47891096563712, 47891096875007,
4119−ERASE, 47891096563712, 47891096563712,
4120−STORE, 47891096563712, 47891096875007,
4121−STORE, 47891096903680, 47891096920063,
4122−STORE, 47891096879104, 47891096903679,
4123−ERASE, 47891096879104, 47891096879104,
4124−STORE, 47891096879104, 47891096903679,
4125−ERASE, 47891096903680, 47891096903680,
4126−STORE, 47891096903680, 47891096920063,
4127−STORE, 47891096903680, 47891096932351,
4128−ERASE, 47891096879104, 47891096879104,
4129−STORE, 47891096879104, 47891096895487,
4130−STORE, 47891096895488, 47891096903679,
4131−ERASE, 47891095064576, 47891095064576,
4132−STORE, 47891095064576, 47891095068671,
4133−STORE, 47891095068672, 47891095072767,
4134−ERASE, 94443354841088, 94443354841088,
4135−STORE, 94443354841088, 94443354857471,
4136−STORE, 94443354857472, 94443354861567,
4137−ERASE, 139741700198400, 139741700198400,
4138−STORE, 139741700198400, 139741700202495,
4139−STORE, 139741700202496, 139741700206591,
4140−ERASE, 47891094958080, 47891094958080,
4141−STORE, 94443360825344, 94443360960511,
4142−STORE, 140737488347136, 140737488351231,
4143−STORE, 140722961661952, 140737488351231,
4144−ERASE, 140722961661952, 140722961661952,
4145−STORE, 140722961661952, 140722961666047,
4146−STORE, 94878388944896, 94878389657599,
4147−ERASE, 94878388944896, 94878388944896,
4148−STORE, 94878388944896, 94878388994047,
4149−STORE, 94878388994048, 94878389657599,
4150−ERASE, 94878388994048, 94878388994048,
4151−STORE, 94878388994048, 94878389538815,
4152−STORE, 94878389538816, 94878389637119,
4153−STORE, 94878389637120, 94878389657599,
4154−STORE, 140210690056192, 140210690228223,
4155−ERASE, 140210690056192, 140210690056192,
4156−STORE, 140210690056192, 140210690060287,
4157−STORE, 140210690060288, 140210690228223,
4158−ERASE, 140210690060288, 140210690060288,
4159−STORE, 140210690060288, 140210690183167,
4160−STORE, 140210690183168, 140210690215935,
4161−STORE, 140210690215936, 140210690224127,
4162−STORE, 140210690224128, 140210690228223,
4163−STORE, 140722963148800, 140722963152895,
4164−STORE, 140722963136512, 140722963148799,
4165−STORE, 47422104940544, 47422104948735,
4166−STORE, 47422104948736, 47422104956927,
4167−STORE, 47422104956928, 47422105063423,
4168−STORE, 47422104973312, 47422105063423,
4169−STORE, 47422104956928, 47422104973311,
4170−ERASE, 47422104973312, 47422104973312,
4171−STORE, 47422104973312, 47422105047039,
4172−STORE, 47422105047040, 47422105063423,
4173−STORE, 47422105026560, 47422105047039,
4174−STORE, 47422104973312, 47422105026559,
4175−ERASE, 47422104973312, 47422104973312,
4176−STORE, 47422104973312, 47422105026559,
4177−STORE, 47422105042944, 47422105047039,
4178−STORE, 47422105026560, 47422105042943,
4179−ERASE, 47422105026560, 47422105026560,
4180−STORE, 47422105026560, 47422105042943,
4181−STORE, 47422105055232, 47422105063423,
4182−STORE, 47422105047040, 47422105055231,
4183−ERASE, 47422105047040, 47422105047040,
4184−STORE, 47422105047040, 47422105055231,
4185−ERASE, 47422105055232, 47422105055232,
4186−STORE, 47422105055232, 47422105063423,
4187−STORE, 47422105063424, 47422106902527,
4188−STORE, 47422105202688, 47422106902527,
4189−STORE, 47422105063424, 47422105202687,
4190−ERASE, 47422105202688, 47422105202688,
4191−STORE, 47422105202688, 47422106861567,
4192−STORE, 47422106861568, 47422106902527,
4193−STORE, 47422106546176, 47422106861567,
4194−STORE, 47422105202688, 47422106546175,
4195−ERASE, 47422105202688, 47422105202688,
4196−STORE, 47422105202688, 47422106546175,
4197−STORE, 47422106857472, 47422106861567,
4198−STORE, 47422106546176, 47422106857471,
4199−ERASE, 47422106546176, 47422106546176,
4200−STORE, 47422106546176, 47422106857471,
4201−STORE, 47422106886144, 47422106902527,
4202−STORE, 47422106861568, 47422106886143,
4203−ERASE, 47422106861568, 47422106861568,
4204−STORE, 47422106861568, 47422106886143,
4205−ERASE, 47422106886144, 47422106886144,
4206−STORE, 47422106886144, 47422106902527,
4207−STORE, 47422106886144, 47422106914815,
4208−ERASE, 47422106861568, 47422106861568,
4209−STORE, 47422106861568, 47422106877951,
4210−STORE, 47422106877952, 47422106886143,
4211−ERASE, 47422105047040, 47422105047040,
4212−STORE, 47422105047040, 47422105051135,
4213−STORE, 47422105051136, 47422105055231,
4214−ERASE, 94878389637120, 94878389637120,
4215−STORE, 94878389637120, 94878389653503,
4216−STORE, 94878389653504, 94878389657599,
4217−ERASE, 140210690215936, 140210690215936,
4218−STORE, 140210690215936, 140210690220031,
4219−STORE, 140210690220032, 140210690224127,
4220−ERASE, 47422104940544, 47422104940544,
4221−STORE, 140737488347136, 140737488351231,
4222−STORE, 140727690309632, 140737488351231,
4223−ERASE, 140727690309632, 140727690309632,
4224−STORE, 140727690309632, 140727690313727,
4225−STORE, 94121892208640, 94121892921343,
4226−ERASE, 94121892208640, 94121892208640,
4227−STORE, 94121892208640, 94121892257791,
4228−STORE, 94121892257792, 94121892921343,
4229−ERASE, 94121892257792, 94121892257792,
4230−STORE, 94121892257792, 94121892802559,
4231−STORE, 94121892802560, 94121892900863,
4232−STORE, 94121892900864, 94121892921343,
4233−STORE, 140662438326272, 140662438498303,
4234−ERASE, 140662438326272, 140662438326272,
4235−STORE, 140662438326272, 140662438330367,
4236−STORE, 140662438330368, 140662438498303,
4237−ERASE, 140662438330368, 140662438330368,
4238−STORE, 140662438330368, 140662438453247,
4239−STORE, 140662438453248, 140662438486015,
4240−STORE, 140662438486016, 140662438494207,
4241−STORE, 140662438494208, 140662438498303,
4242−STORE, 140727690379264, 140727690383359,
4243−STORE, 140727690366976, 140727690379263,
4244−STORE, 46970356670464, 46970356678655,
4245−STORE, 46970356678656, 46970356686847,
4246−STORE, 46970356686848, 46970356793343,
4247−STORE, 46970356703232, 46970356793343,
4248−STORE, 46970356686848, 46970356703231,
4249−ERASE, 46970356703232, 46970356703232,
4250−STORE, 46970356703232, 46970356776959,
4251−STORE, 46970356776960, 46970356793343,
4252−STORE, 46970356756480, 46970356776959,
4253−STORE, 46970356703232, 46970356756479,
4254−ERASE, 46970356703232, 46970356703232,
4255−STORE, 46970356703232, 46970356756479,
4256−STORE, 46970356772864, 46970356776959,
4257−STORE, 46970356756480, 46970356772863,
4258−ERASE, 46970356756480, 46970356756480,
4259−STORE, 46970356756480, 46970356772863,
4260−STORE, 46970356785152, 46970356793343,
4261−STORE, 46970356776960, 46970356785151,
4262−ERASE, 46970356776960, 46970356776960,
4263−STORE, 46970356776960, 46970356785151,
4264−ERASE, 46970356785152, 46970356785152,
4265−STORE, 46970356785152, 46970356793343,
4266−STORE, 46970356793344, 46970358632447,
4267−STORE, 46970356932608, 46970358632447,
4268−STORE, 46970356793344, 46970356932607,
4269−ERASE, 46970356932608, 46970356932608,
4270−STORE, 46970356932608, 46970358591487,
4271−STORE, 46970358591488, 46970358632447,
4272−STORE, 46970358276096, 46970358591487,
4273−STORE, 46970356932608, 46970358276095,
4274−ERASE, 46970356932608, 46970356932608,
4275−STORE, 46970356932608, 46970358276095,
4276−STORE, 46970358587392, 46970358591487,
4277−STORE, 46970358276096, 46970358587391,
4278−ERASE, 46970358276096, 46970358276096,
4279−STORE, 46970358276096, 46970358587391,
4280−STORE, 46970358616064, 46970358632447,
4281−STORE, 46970358591488, 46970358616063,
4282−ERASE, 46970358591488, 46970358591488,
4283−STORE, 46970358591488, 46970358616063,
4284−ERASE, 46970358616064, 46970358616064,
4285−STORE, 46970358616064, 46970358632447,
4286−STORE, 46970358616064, 46970358644735,
4287−ERASE, 46970358591488, 46970358591488,
4288−STORE, 46970358591488, 46970358607871,
4289−STORE, 46970358607872, 46970358616063,
4290−ERASE, 46970356776960, 46970356776960,
4291−STORE, 46970356776960, 46970356781055,
4292−STORE, 46970356781056, 46970356785151,
4293−ERASE, 94121892900864, 94121892900864,
4294−STORE, 94121892900864, 94121892917247,
4295−STORE, 94121892917248, 94121892921343,
4296−ERASE, 140662438486016, 140662438486016,
4297−STORE, 140662438486016, 140662438490111,
4298−STORE, 140662438490112, 140662438494207,
4299−ERASE, 46970356670464, 46970356670464,
4300−STORE, 94121898610688, 94121898745855,
4301−STORE, 140737488347136, 140737488351231,
4302−STORE, 140737189351424, 140737488351231,
4303−ERASE, 140737189351424, 140737189351424,
4304−STORE, 140737189351424, 140737189355519,
4305−STORE, 93847948832768, 93847949545471,
4306−ERASE, 93847948832768, 93847948832768,
4307−STORE, 93847948832768, 93847948881919,
4308−STORE, 93847948881920, 93847949545471,
4309−ERASE, 93847948881920, 93847948881920,
4310−STORE, 93847948881920, 93847949426687,
4311−STORE, 93847949426688, 93847949524991,
4312−STORE, 93847949524992, 93847949545471,
4313−STORE, 139698989985792, 139698990157823,
4314−ERASE, 139698989985792, 139698989985792,
4315−STORE, 139698989985792, 139698989989887,
4316−STORE, 139698989989888, 139698990157823,
4317−ERASE, 139698989989888, 139698989989888,
4318−STORE, 139698989989888, 139698990112767,
4319−STORE, 139698990112768, 139698990145535,
4320−STORE, 139698990145536, 139698990153727,
4321−STORE, 139698990153728, 139698990157823,
4322−STORE, 140737189744640, 140737189748735,
4323−STORE, 140737189732352, 140737189744639,
4324−STORE, 47933805010944, 47933805019135,
4325−STORE, 47933805019136, 47933805027327,
4326−STORE, 47933805027328, 47933805133823,
4327−STORE, 47933805043712, 47933805133823,
4328−STORE, 47933805027328, 47933805043711,
4329−ERASE, 47933805043712, 47933805043712,
4330−STORE, 47933805043712, 47933805117439,
4331−STORE, 47933805117440, 47933805133823,
4332−STORE, 47933805096960, 47933805117439,
4333−STORE, 47933805043712, 47933805096959,
4334−ERASE, 47933805043712, 47933805043712,
4335−STORE, 47933805043712, 47933805096959,
4336−STORE, 47933805113344, 47933805117439,
4337−STORE, 47933805096960, 47933805113343,
4338−ERASE, 47933805096960, 47933805096960,
4339−STORE, 47933805096960, 47933805113343,
4340−STORE, 47933805125632, 47933805133823,
4341−STORE, 47933805117440, 47933805125631,
4342−ERASE, 47933805117440, 47933805117440,
4343−STORE, 47933805117440, 47933805125631,
4344−ERASE, 47933805125632, 47933805125632,
4345−STORE, 47933805125632, 47933805133823,
4346−STORE, 47933805133824, 47933806972927,
4347−STORE, 47933805273088, 47933806972927,
4348−STORE, 47933805133824, 47933805273087,
4349−ERASE, 47933805273088, 47933805273088,
4350−STORE, 47933805273088, 47933806931967,
4351−STORE, 47933806931968, 47933806972927,
4352−STORE, 47933806616576, 47933806931967,
4353−STORE, 47933805273088, 47933806616575,
4354−ERASE, 47933805273088, 47933805273088,
4355−STORE, 47933805273088, 47933806616575,
4356−STORE, 47933806927872, 47933806931967,
4357−STORE, 47933806616576, 47933806927871,
4358−ERASE, 47933806616576, 47933806616576,
4359−STORE, 47933806616576, 47933806927871,
4360−STORE, 47933806956544, 47933806972927,
4361−STORE, 47933806931968, 47933806956543,
4362−ERASE, 47933806931968, 47933806931968,
4363−STORE, 47933806931968, 47933806956543,
4364−ERASE, 47933806956544, 47933806956544,
4365−STORE, 47933806956544, 47933806972927,
4366−STORE, 47933806956544, 47933806985215,
4367−ERASE, 47933806931968, 47933806931968,
4368−STORE, 47933806931968, 47933806948351,
4369−STORE, 47933806948352, 47933806956543,
4370−ERASE, 47933805117440, 47933805117440,
4371−STORE, 47933805117440, 47933805121535,
4372−STORE, 47933805121536, 47933805125631,
4373−ERASE, 93847949524992, 93847949524992,
4374−STORE, 93847949524992, 93847949541375,
4375−STORE, 93847949541376, 93847949545471,
4376−ERASE, 139698990145536, 139698990145536,
4377−STORE, 139698990145536, 139698990149631,
4378−STORE, 139698990149632, 139698990153727,
4379−ERASE, 47933805010944, 47933805010944,
4380−STORE, 140737488347136, 140737488351231,
4381−STORE, 140725553991680, 140737488351231,
4382−ERASE, 140725553991680, 140725553991680,
4383−STORE, 140725553991680, 140725553995775,
4384−STORE, 93980056248320, 93980056961023,
4385−ERASE, 93980056248320, 93980056248320,
4386−STORE, 93980056248320, 93980056297471,
4387−STORE, 93980056297472, 93980056961023,
4388−ERASE, 93980056297472, 93980056297472,
4389−STORE, 93980056297472, 93980056842239,
4390−STORE, 93980056842240, 93980056940543,
4391−STORE, 93980056940544, 93980056961023,
4392−STORE, 140146588971008, 140146589143039,
4393−ERASE, 140146588971008, 140146588971008,
4394−STORE, 140146588971008, 140146588975103,
4395−STORE, 140146588975104, 140146589143039,
4396−ERASE, 140146588975104, 140146588975104,
4397−STORE, 140146588975104, 140146589097983,
4398−STORE, 140146589097984, 140146589130751,
4399−STORE, 140146589130752, 140146589138943,
4400−STORE, 140146589138944, 140146589143039,
4401−STORE, 140725554860032, 140725554864127,
4402−STORE, 140725554847744, 140725554860031,
4403−STORE, 47486206025728, 47486206033919,
4404−STORE, 47486206033920, 47486206042111,
4405−STORE, 47486206042112, 47486206148607,
4406−STORE, 47486206058496, 47486206148607,
4407−STORE, 47486206042112, 47486206058495,
4408−ERASE, 47486206058496, 47486206058496,
4409−STORE, 47486206058496, 47486206132223,
4410−STORE, 47486206132224, 47486206148607,
4411−STORE, 47486206111744, 47486206132223,
4412−STORE, 47486206058496, 47486206111743,
4413−ERASE, 47486206058496, 47486206058496,
4414−STORE, 47486206058496, 47486206111743,
4415−STORE, 47486206128128, 47486206132223,
4416−STORE, 47486206111744, 47486206128127,
4417−ERASE, 47486206111744, 47486206111744,
4418−STORE, 47486206111744, 47486206128127,
4419−STORE, 47486206140416, 47486206148607,
4420−STORE, 47486206132224, 47486206140415,
4421−ERASE, 47486206132224, 47486206132224,
4422−STORE, 47486206132224, 47486206140415,
4423−ERASE, 47486206140416, 47486206140416,
4424−STORE, 47486206140416, 47486206148607,
4425−STORE, 47486206148608, 47486207987711,
4426−STORE, 47486206287872, 47486207987711,
4427−STORE, 47486206148608, 47486206287871,
4428−ERASE, 47486206287872, 47486206287872,
4429−STORE, 47486206287872, 47486207946751,
4430−STORE, 47486207946752, 47486207987711,
4431−STORE, 47486207631360, 47486207946751,
4432−STORE, 47486206287872, 47486207631359,
4433−ERASE, 47486206287872, 47486206287872,
4434−STORE, 47486206287872, 47486207631359,
4435−STORE, 47486207942656, 47486207946751,
4436−STORE, 47486207631360, 47486207942655,
4437−ERASE, 47486207631360, 47486207631360,
4438−STORE, 47486207631360, 47486207942655,
4439−STORE, 47486207971328, 47486207987711,
4440−STORE, 47486207946752, 47486207971327,
4441−ERASE, 47486207946752, 47486207946752,
4442−STORE, 47486207946752, 47486207971327,
4443−ERASE, 47486207971328, 47486207971328,
4444−STORE, 47486207971328, 47486207987711,
4445−STORE, 47486207971328, 47486207999999,
4446−ERASE, 47486207946752, 47486207946752,
4447−STORE, 47486207946752, 47486207963135,
4448−STORE, 47486207963136, 47486207971327,
4449−ERASE, 47486206132224, 47486206132224,
4450−STORE, 47486206132224, 47486206136319,
4451−STORE, 47486206136320, 47486206140415,
4452−ERASE, 93980056940544, 93980056940544,
4453−STORE, 93980056940544, 93980056956927,
4454−STORE, 93980056956928, 93980056961023,
4455−ERASE, 140146589130752, 140146589130752,
4456−STORE, 140146589130752, 140146589134847,
4457−STORE, 140146589134848, 140146589138943,
4458−ERASE, 47486206025728, 47486206025728,
4459−STORE, 93980070006784, 93980070141951,
4460−STORE, 140737488347136, 140737488351231,
4461−STORE, 140727334776832, 140737488351231,
4462−ERASE, 140727334776832, 140727334776832,
4463−STORE, 140727334776832, 140727334780927,
4464−STORE, 94049747247104, 94049747959807,
4465−ERASE, 94049747247104, 94049747247104,
4466−STORE, 94049747247104, 94049747296255,
4467−STORE, 94049747296256, 94049747959807,
4468−ERASE, 94049747296256, 94049747296256,
4469−STORE, 94049747296256, 94049747841023,
4470−STORE, 94049747841024, 94049747939327,
4471−STORE, 94049747939328, 94049747959807,
4472−STORE, 140227307216896, 140227307388927,
4473−ERASE, 140227307216896, 140227307216896,
4474−STORE, 140227307216896, 140227307220991,
4475−STORE, 140227307220992, 140227307388927,
4476−ERASE, 140227307220992, 140227307220992,
4477−STORE, 140227307220992, 140227307343871,
4478−STORE, 140227307343872, 140227307376639,
4479−STORE, 140227307376640, 140227307384831,
4480−STORE, 140227307384832, 140227307388927,
4481−STORE, 140727335337984, 140727335342079,
4482−STORE, 140727335325696, 140727335337983,
4483−STORE, 47405487779840, 47405487788031,
4484−STORE, 47405487788032, 47405487796223,
4485−STORE, 47405487796224, 47405487902719,
4486−STORE, 47405487812608, 47405487902719,
4487−STORE, 47405487796224, 47405487812607,
4488−ERASE, 47405487812608, 47405487812608,
4489−STORE, 47405487812608, 47405487886335,
4490−STORE, 47405487886336, 47405487902719,
4491−STORE, 47405487865856, 47405487886335,
4492−STORE, 47405487812608, 47405487865855,
4493−ERASE, 47405487812608, 47405487812608,
4494−STORE, 47405487812608, 47405487865855,
4495−STORE, 47405487882240, 47405487886335,
4496−STORE, 47405487865856, 47405487882239,
4497−ERASE, 47405487865856, 47405487865856,
4498−STORE, 47405487865856, 47405487882239,
4499−STORE, 47405487894528, 47405487902719,
4500−STORE, 47405487886336, 47405487894527,
4501−ERASE, 47405487886336, 47405487886336,
4502−STORE, 47405487886336, 47405487894527,
4503−ERASE, 47405487894528, 47405487894528,
4504−STORE, 47405487894528, 47405487902719,
4505−STORE, 47405487902720, 47405489741823,
4506−STORE, 47405488041984, 47405489741823,
4507−STORE, 47405487902720, 47405488041983,
4508−ERASE, 47405488041984, 47405488041984,
4509−STORE, 47405488041984, 47405489700863,
4510−STORE, 47405489700864, 47405489741823,
4511−STORE, 47405489385472, 47405489700863,
4512−STORE, 47405488041984, 47405489385471,
4513−ERASE, 47405488041984, 47405488041984,
4514−STORE, 47405488041984, 47405489385471,
4515−STORE, 47405489696768, 47405489700863,
4516−STORE, 47405489385472, 47405489696767,
4517−ERASE, 47405489385472, 47405489385472,
4518−STORE, 47405489385472, 47405489696767,
4519−STORE, 47405489725440, 47405489741823,
4520−STORE, 47405489700864, 47405489725439,
4521−ERASE, 47405489700864, 47405489700864,
4522−STORE, 47405489700864, 47405489725439,
4523−ERASE, 47405489725440, 47405489725440,
4524−STORE, 47405489725440, 47405489741823,
4525−STORE, 47405489725440, 47405489754111,
4526−ERASE, 47405489700864, 47405489700864,
4527−STORE, 47405489700864, 47405489717247,
4528−STORE, 47405489717248, 47405489725439,
4529−ERASE, 47405487886336, 47405487886336,
4530−STORE, 47405487886336, 47405487890431,
4531−STORE, 47405487890432, 47405487894527,
4532−ERASE, 94049747939328, 94049747939328,
4533−STORE, 94049747939328, 94049747955711,
4534−STORE, 94049747955712, 94049747959807,
4535−ERASE, 140227307376640, 140227307376640,
4536−STORE, 140227307376640, 140227307380735,
4537−STORE, 140227307380736, 140227307384831,
4538−ERASE, 47405487779840, 47405487779840,
4539−STORE, 94049758810112, 94049758945279,
4540−STORE, 140737488347136, 140737488351231,
4541−STORE, 140727079718912, 140737488351231,
4542−ERASE, 140727079718912, 140727079718912,
4543−STORE, 140727079718912, 140727079723007,
4544−STORE, 94250996527104, 94250997239807,
4545−ERASE, 94250996527104, 94250996527104,
4546−STORE, 94250996527104, 94250996576255,
4547−STORE, 94250996576256, 94250997239807,
4548−ERASE, 94250996576256, 94250996576256,
4549−STORE, 94250996576256, 94250997121023,
4550−STORE, 94250997121024, 94250997219327,
4551−STORE, 94250997219328, 94250997239807,
4552−STORE, 140060022587392, 140060022759423,
4553−ERASE, 140060022587392, 140060022587392,
4554−STORE, 140060022587392, 140060022591487,
4555−STORE, 140060022591488, 140060022759423,
4556−ERASE, 140060022591488, 140060022591488,
4557−STORE, 140060022591488, 140060022714367,
4558−STORE, 140060022714368, 140060022747135,
4559−STORE, 140060022747136, 140060022755327,
4560−STORE, 140060022755328, 140060022759423,
4561−STORE, 140727079788544, 140727079792639,
4562−STORE, 140727079776256, 140727079788543,
4563−/* this next one caused issues when lowering the efficiency */
4564−STORE, 47572772409344, 47572772417535,
4565−STORE, 47572772417536, 47572772425727,
4566−STORE, 47572772425728, 47572772532223,
4567−STORE, 47572772442112, 47572772532223,
4568−STORE, 47572772425728, 47572772442111,
4569−ERASE, 47572772442112, 47572772442112,
4570−STORE, 47572772442112, 47572772515839,
4571−STORE, 47572772515840, 47572772532223,
4572−STORE, 47572772495360, 47572772515839,
4573−STORE, 47572772442112, 47572772495359,
4574−ERASE, 47572772442112, 47572772442112,
4575−STORE, 47572772442112, 47572772495359,
4576−STORE, 47572772511744, 47572772515839,
4577−STORE, 47572772495360, 47572772511743,
4578−ERASE, 47572772495360, 47572772495360,
4579−STORE, 47572772495360, 47572772511743,
4580−STORE, 47572772524032, 47572772532223,
4581−STORE, 47572772515840, 47572772524031,
4582−ERASE, 47572772515840, 47572772515840,
4583−STORE, 47572772515840, 47572772524031,
4584−ERASE, 47572772524032, 47572772524032,
4585−STORE, 47572772524032, 47572772532223,
4586−STORE, 47572772532224, 47572774371327,
4587−STORE, 47572772671488, 47572774371327,
4588−STORE, 47572772532224, 47572772671487,
4589−ERASE, 47572772671488, 47572772671488,
4590−STORE, 47572772671488, 47572774330367,
4591−STORE, 47572774330368, 47572774371327,
4592−STORE, 47572774014976, 47572774330367,
4593−STORE, 47572772671488, 47572774014975,
4594−ERASE, 47572772671488, 47572772671488,
4595−STORE, 47572772671488, 47572774014975,
4596−STORE, 47572774326272, 47572774330367,
4597−STORE, 47572774014976, 47572774326271,
4598−ERASE, 47572774014976, 47572774014976,
4599−STORE, 47572774014976, 47572774326271,
4600−STORE, 47572774354944, 47572774371327,
4601−STORE, 47572774330368, 47572774354943,
4602−ERASE, 47572774330368, 47572774330368,
4603−STORE, 47572774330368, 47572774354943,
4604−ERASE, 47572774354944, 47572774354944,
4605−STORE, 47572774354944, 47572774371327,
4606−STORE, 47572774354944, 47572774383615,
4607−ERASE, 47572774330368, 47572774330368,
4608−STORE, 47572774330368, 47572774346751,
4609−STORE, 47572774346752, 47572774354943,
4610−ERASE, 47572772515840, 47572772515840,
4611−STORE, 47572772515840, 47572772519935,
4612−STORE, 47572772519936, 47572772524031,
4613−ERASE, 94250997219328, 94250997219328,
4614−STORE, 94250997219328, 94250997235711,
4615−STORE, 94250997235712, 94250997239807,
4616−ERASE, 140060022747136, 140060022747136,
4617−STORE, 140060022747136, 140060022751231,
4618−STORE, 140060022751232, 140060022755327,
4619−ERASE, 47572772409344, 47572772409344,
4620−STORE, 94251018305536, 94251018440703,
4621−STORE, 140737488347136, 140737488351231,
4622−STORE, 140730012389376, 140737488351231,
4623−ERASE, 140730012389376, 140730012389376,
4624−STORE, 140730012389376, 140730012393471,
4625−STORE, 94382607675392, 94382607695871,
4626−ERASE, 94382607675392, 94382607675392,
4627−STORE, 94382607675392, 94382607679487,
4628−STORE, 94382607679488, 94382607695871,
4629−ERASE, 94382607679488, 94382607679488,
4630−STORE, 94382607679488, 94382607683583,
4631−STORE, 94382607683584, 94382607687679,
4632−STORE, 94382607687680, 94382607695871,
4633−STORE, 140252451454976, 140252451627007,
4634−ERASE, 140252451454976, 140252451454976,
4635−STORE, 140252451454976, 140252451459071,
4636−STORE, 140252451459072, 140252451627007,
4637−ERASE, 140252451459072, 140252451459072,
4638−STORE, 140252451459072, 140252451581951,
4639−STORE, 140252451581952, 140252451614719,
4640−STORE, 140252451614720, 140252451622911,
4641−STORE, 140252451622912, 140252451627007,
4642−STORE, 140730013548544, 140730013552639,
4643−STORE, 140730013536256, 140730013548543,
4644−STORE, 47380343541760, 47380343549951,
4645−STORE, 47380343549952, 47380343558143,
4646−STORE, 47380343558144, 47380345397247,
4647−STORE, 47380343697408, 47380345397247,
4648−STORE, 47380343558144, 47380343697407,
4649−ERASE, 47380343697408, 47380343697408,
4650−STORE, 47380343697408, 47380345356287,
4651−STORE, 47380345356288, 47380345397247,
4652−STORE, 47380345040896, 47380345356287,
4653−STORE, 47380343697408, 47380345040895,
4654−ERASE, 47380343697408, 47380343697408,
4655−STORE, 47380343697408, 47380345040895,
4656−STORE, 47380345352192, 47380345356287,
4657−STORE, 47380345040896, 47380345352191,
4658−ERASE, 47380345040896, 47380345040896,
4659−STORE, 47380345040896, 47380345352191,
4660−STORE, 47380345380864, 47380345397247,
4661−STORE, 47380345356288, 47380345380863,
4662−ERASE, 47380345356288, 47380345356288,
4663−STORE, 47380345356288, 47380345380863,
4664−ERASE, 47380345380864, 47380345380864,
4665−STORE, 47380345380864, 47380345397247,
4666−ERASE, 47380345356288, 47380345356288,
4667−STORE, 47380345356288, 47380345372671,
4668−STORE, 47380345372672, 47380345380863,
4669−ERASE, 94382607687680, 94382607687680,
4670−STORE, 94382607687680, 94382607691775,
4671−STORE, 94382607691776, 94382607695871,
4672−ERASE, 140252451614720, 140252451614720,
4673−STORE, 140252451614720, 140252451618815,
4674−STORE, 140252451618816, 140252451622911,
4675−ERASE, 47380343541760, 47380343541760,
4676−STORE, 94382626803712, 94382626938879,
4677−STORE, 140737488347136, 140737488351231,
4678−STORE, 140730900271104, 140737488351231,
4679−ERASE, 140730900271104, 140730900271104,
4680−STORE, 140730900271104, 140730900275199,
4681−STORE, 93855478120448, 93855478337535,
4682−ERASE, 93855478120448, 93855478120448,
4683−STORE, 93855478120448, 93855478198271,
4684−STORE, 93855478198272, 93855478337535,
4685−ERASE, 93855478198272, 93855478198272,
4686−STORE, 93855478198272, 93855478243327,
4687−STORE, 93855478243328, 93855478288383,
4688−STORE, 93855478288384, 93855478337535,
4689−STORE, 140092686573568, 140092686745599,
4690−ERASE, 140092686573568, 140092686573568,
4691−STORE, 140092686573568, 140092686577663,
4692−STORE, 140092686577664, 140092686745599,
4693−ERASE, 140092686577664, 140092686577664,
4694−STORE, 140092686577664, 140092686700543,
4695−STORE, 140092686700544, 140092686733311,
4696−STORE, 140092686733312, 140092686741503,
4697−STORE, 140092686741504, 140092686745599,
4698−STORE, 140730900537344, 140730900541439,
4699−STORE, 140730900525056, 140730900537343,
4700−STORE, 47540108423168, 47540108431359,
4701−STORE, 47540108431360, 47540108439551,
4702−STORE, 47540108439552, 47540110278655,
4703−STORE, 47540108578816, 47540110278655,
4704−STORE, 47540108439552, 47540108578815,
4705−ERASE, 47540108578816, 47540108578816,
4706−STORE, 47540108578816, 47540110237695,
4707−STORE, 47540110237696, 47540110278655,
4708−STORE, 47540109922304, 47540110237695,
4709−STORE, 47540108578816, 47540109922303,
4710−ERASE, 47540108578816, 47540108578816,
4711−STORE, 47540108578816, 47540109922303,
4712−STORE, 47540110233600, 47540110237695,
4713−STORE, 47540109922304, 47540110233599,
4714−ERASE, 47540109922304, 47540109922304,
4715−STORE, 47540109922304, 47540110233599,
4716−STORE, 47540110262272, 47540110278655,
4717−STORE, 47540110237696, 47540110262271,
4718−ERASE, 47540110237696, 47540110237696,
4719−STORE, 47540110237696, 47540110262271,
4720−ERASE, 47540110262272, 47540110262272,
4721−STORE, 47540110262272, 47540110278655,
4722−ERASE, 47540110237696, 47540110237696,
4723−STORE, 47540110237696, 47540110254079,
4724−STORE, 47540110254080, 47540110262271,
4725−ERASE, 93855478288384, 93855478288384,
4726−STORE, 93855478288384, 93855478333439,
4727−STORE, 93855478333440, 93855478337535,
4728−ERASE, 140092686733312, 140092686733312,
4729−STORE, 140092686733312, 140092686737407,
4730−STORE, 140092686737408, 140092686741503,
4731−ERASE, 47540108423168, 47540108423168,
4732−STORE, 93855492222976, 93855492358143,
4733−STORE, 93855492222976, 93855492493311,
4734−STORE, 140737488347136, 140737488351231,
4735−STORE, 140733498146816, 140737488351231,
4736−ERASE, 140733498146816, 140733498146816,
4737−STORE, 140733498146816, 140733498150911,
4738−STORE, 94170739654656, 94170740367359,
4739−ERASE, 94170739654656, 94170739654656,
4740−STORE, 94170739654656, 94170739703807,
4741−STORE, 94170739703808, 94170740367359,
4742−ERASE, 94170739703808, 94170739703808,
4743−STORE, 94170739703808, 94170740248575,
4744−STORE, 94170740248576, 94170740346879,
4745−STORE, 94170740346880, 94170740367359,
4746−STORE, 140024788877312, 140024789049343,
4747−ERASE, 140024788877312, 140024788877312,
4748−STORE, 140024788877312, 140024788881407,
4749−STORE, 140024788881408, 140024789049343,
4750−ERASE, 140024788881408, 140024788881408,
4751−STORE, 140024788881408, 140024789004287,
4752−STORE, 140024789004288, 140024789037055,
4753−STORE, 140024789037056, 140024789045247,
4754−STORE, 140024789045248, 140024789049343,
4755−STORE, 140733499023360, 140733499027455,
4756−STORE, 140733499011072, 140733499023359,
4757−STORE, 47608006119424, 47608006127615,
4758−STORE, 47608006127616, 47608006135807,
4759−STORE, 47608006135808, 47608006242303,
4760−STORE, 47608006152192, 47608006242303,
4761−STORE, 47608006135808, 47608006152191,
4762−ERASE, 47608006152192, 47608006152192,
4763−STORE, 47608006152192, 47608006225919,
4764−STORE, 47608006225920, 47608006242303,
4765−STORE, 47608006205440, 47608006225919,
4766−STORE, 47608006152192, 47608006205439,
4767−ERASE, 47608006152192, 47608006152192,
4768−STORE, 47608006152192, 47608006205439,
4769−STORE, 47608006221824, 47608006225919,
4770−STORE, 47608006205440, 47608006221823,
4771−ERASE, 47608006205440, 47608006205440,
4772−STORE, 47608006205440, 47608006221823,
4773−STORE, 47608006234112, 47608006242303,
4774−STORE, 47608006225920, 47608006234111,
4775−ERASE, 47608006225920, 47608006225920,
4776−STORE, 47608006225920, 47608006234111,
4777−ERASE, 47608006234112, 47608006234112,
4778−STORE, 47608006234112, 47608006242303,
4779−STORE, 47608006242304, 47608008081407,
4780−STORE, 47608006381568, 47608008081407,
4781−STORE, 47608006242304, 47608006381567,
4782−ERASE, 47608006381568, 47608006381568,
4783−STORE, 47608006381568, 47608008040447,
4784−STORE, 47608008040448, 47608008081407,
4785−STORE, 47608007725056, 47608008040447,
4786−STORE, 47608006381568, 47608007725055,
4787−ERASE, 47608006381568, 47608006381568,
4788−STORE, 47608006381568, 47608007725055,
4789−STORE, 47608008036352, 47608008040447,
4790−STORE, 47608007725056, 47608008036351,
4791−ERASE, 47608007725056, 47608007725056,
4792−STORE, 47608007725056, 47608008036351,
4793−STORE, 47608008065024, 47608008081407,
4794−STORE, 47608008040448, 47608008065023,
4795−ERASE, 47608008040448, 47608008040448,
4796−STORE, 47608008040448, 47608008065023,
4797−ERASE, 47608008065024, 47608008065024,
4798−STORE, 47608008065024, 47608008081407,
4799−STORE, 47608008065024, 47608008093695,
4800−ERASE, 47608008040448, 47608008040448,
4801−STORE, 47608008040448, 47608008056831,
4802−STORE, 47608008056832, 47608008065023,
4803−ERASE, 47608006225920, 47608006225920,
4804−STORE, 47608006225920, 47608006230015,
4805−STORE, 47608006230016, 47608006234111,
4806−ERASE, 94170740346880, 94170740346880,
4807−STORE, 94170740346880, 94170740363263,
4808−STORE, 94170740363264, 94170740367359,
4809−ERASE, 140024789037056, 140024789037056,
4810−STORE, 140024789037056, 140024789041151,
4811−STORE, 140024789041152, 140024789045247,
4812−ERASE, 47608006119424, 47608006119424,
4813−STORE, 140737488347136, 140737488351231,
4814−STORE, 140730264326144, 140737488351231,
4815−ERASE, 140730264326144, 140730264326144,
4816−STORE, 140730264326144, 140730264330239,
4817−STORE, 94653216407552, 94653217120255,
4818−ERASE, 94653216407552, 94653216407552,
4819−STORE, 94653216407552, 94653216456703,
4820−STORE, 94653216456704, 94653217120255,
4821−ERASE, 94653216456704, 94653216456704,
4822−STORE, 94653216456704, 94653217001471,
4823−STORE, 94653217001472, 94653217099775,
4824−STORE, 94653217099776, 94653217120255,
4825−STORE, 140103617011712, 140103617183743,
4826−ERASE, 140103617011712, 140103617011712,
4827−STORE, 140103617011712, 140103617015807,
4828−STORE, 140103617015808, 140103617183743,
4829−ERASE, 140103617015808, 140103617015808,
4830−STORE, 140103617015808, 140103617138687,
4831−STORE, 140103617138688, 140103617171455,
4832−STORE, 140103617171456, 140103617179647,
4833−STORE, 140103617179648, 140103617183743,
4834−STORE, 140730265427968, 140730265432063,
4835−STORE, 140730265415680, 140730265427967,
4836−STORE, 47529177985024, 47529177993215,
4837−STORE, 47529177993216, 47529178001407,
4838−STORE, 47529178001408, 47529178107903,
4839−STORE, 47529178017792, 47529178107903,
4840−STORE, 47529178001408, 47529178017791,
4841−ERASE, 47529178017792, 47529178017792,
4842−STORE, 47529178017792, 47529178091519,
4843−STORE, 47529178091520, 47529178107903,
4844−STORE, 47529178071040, 47529178091519,
4845−STORE, 47529178017792, 47529178071039,
4846−ERASE, 47529178017792, 47529178017792,
4847−STORE, 47529178017792, 47529178071039,
4848−STORE, 47529178087424, 47529178091519,
4849−STORE, 47529178071040, 47529178087423,
4850−ERASE, 47529178071040, 47529178071040,
4851−STORE, 47529178071040, 47529178087423,
4852−STORE, 47529178099712, 47529178107903,
4853−STORE, 47529178091520, 47529178099711,
4854−ERASE, 47529178091520, 47529178091520,
4855−STORE, 47529178091520, 47529178099711,
4856−ERASE, 47529178099712, 47529178099712,
4857−STORE, 47529178099712, 47529178107903,
4858−STORE, 47529178107904, 47529179947007,
4859−STORE, 47529178247168, 47529179947007,
4860−STORE, 47529178107904, 47529178247167,
4861−ERASE, 47529178247168, 47529178247168,
4862−STORE, 47529178247168, 47529179906047,
4863−STORE, 47529179906048, 47529179947007,
4864−STORE, 47529179590656, 47529179906047,
4865−STORE, 47529178247168, 47529179590655,
4866−ERASE, 47529178247168, 47529178247168,
4867−STORE, 47529178247168, 47529179590655,
4868−STORE, 47529179901952, 47529179906047,
4869−STORE, 47529179590656, 47529179901951,
4870−ERASE, 47529179590656, 47529179590656,
4871−STORE, 47529179590656, 47529179901951,
4872−STORE, 47529179930624, 47529179947007,
4873−STORE, 47529179906048, 47529179930623,
4874−ERASE, 47529179906048, 47529179906048,
4875−STORE, 47529179906048, 47529179930623,
4876−ERASE, 47529179930624, 47529179930624,
4877−STORE, 47529179930624, 47529179947007,
4878−STORE, 47529179930624, 47529179959295,
4879−ERASE, 47529179906048, 47529179906048,
4880−STORE, 47529179906048, 47529179922431,
4881−STORE, 47529179922432, 47529179930623,
4882−ERASE, 47529178091520, 47529178091520,
4883−STORE, 47529178091520, 47529178095615,
4884−STORE, 47529178095616, 47529178099711,
4885−ERASE, 94653217099776, 94653217099776,
4886−STORE, 94653217099776, 94653217116159,
4887−STORE, 94653217116160, 94653217120255,
4888−ERASE, 140103617171456, 140103617171456,
4889−STORE, 140103617171456, 140103617175551,
4890−STORE, 140103617175552, 140103617179647,
4891−ERASE, 47529177985024, 47529177985024,
4892−STORE, 94653241135104, 94653241270271,
4893−STORE, 140737488347136, 140737488351231,
4894−STORE, 140736284549120, 140737488351231,
4895−ERASE, 140736284549120, 140736284549120,
4896−STORE, 140736284549120, 140736284553215,
4897−STORE, 93963663822848, 93963664506879,
4898−ERASE, 93963663822848, 93963663822848,
4899−STORE, 93963663822848, 93963663884287,
4900−STORE, 93963663884288, 93963664506879,
4901−ERASE, 93963663884288, 93963663884288,
4902−STORE, 93963663884288, 93963664240639,
4903−STORE, 93963664240640, 93963664379903,
4904−STORE, 93963664379904, 93963664506879,
4905−STORE, 140450188439552, 140450188611583,
4906−ERASE, 140450188439552, 140450188439552,
4907−STORE, 140450188439552, 140450188443647,
4908−STORE, 140450188443648, 140450188611583,
4909−ERASE, 140450188443648, 140450188443648,
4910−STORE, 140450188443648, 140450188566527,
4911−STORE, 140450188566528, 140450188599295,
4912−STORE, 140450188599296, 140450188607487,
4913−STORE, 140450188607488, 140450188611583,
4914−STORE, 140736284577792, 140736284581887,
4915−STORE, 140736284565504, 140736284577791,
4916−STORE, 47182606557184, 47182606565375,
4917−STORE, 47182606565376, 47182606573567,
4918−STORE, 47182606573568, 47182608412671,
4919−STORE, 47182606712832, 47182608412671,
4920−STORE, 47182606573568, 47182606712831,
4921−ERASE, 47182606712832, 47182606712832,
4922−STORE, 47182606712832, 47182608371711,
4923−STORE, 47182608371712, 47182608412671,
4924−STORE, 47182608056320, 47182608371711,
4925−STORE, 47182606712832, 47182608056319,
4926−ERASE, 47182606712832, 47182606712832,
4927−STORE, 47182606712832, 47182608056319,
4928−STORE, 47182608367616, 47182608371711,
4929−STORE, 47182608056320, 47182608367615,
4930−ERASE, 47182608056320, 47182608056320,
4931−STORE, 47182608056320, 47182608367615,
4932−STORE, 47182608396288, 47182608412671,
4933−STORE, 47182608371712, 47182608396287,
4934−ERASE, 47182608371712, 47182608371712,
4935−STORE, 47182608371712, 47182608396287,
4936−ERASE, 47182608396288, 47182608396288,
4937−STORE, 47182608396288, 47182608412671,
4938−STORE, 47182608412672, 47182608523263,
4939−STORE, 47182608429056, 47182608523263,
4940−STORE, 47182608412672, 47182608429055,
4941−ERASE, 47182608429056, 47182608429056,
4942−STORE, 47182608429056, 47182608515071,
4943−STORE, 47182608515072, 47182608523263,
4944−STORE, 47182608490496, 47182608515071,
4945−STORE, 47182608429056, 47182608490495,
4946−ERASE, 47182608429056, 47182608429056,
4947−STORE, 47182608429056, 47182608490495,
4948−STORE, 47182608510976, 47182608515071,
4949−STORE, 47182608490496, 47182608510975,
4950−ERASE, 47182608490496, 47182608490496,
4951−STORE, 47182608490496, 47182608510975,
4952−ERASE, 47182608515072, 47182608515072,
4953−STORE, 47182608515072, 47182608523263,
4954−STORE, 47182608523264, 47182608568319,
4955−ERASE, 47182608523264, 47182608523264,
4956−STORE, 47182608523264, 47182608531455,
4957−STORE, 47182608531456, 47182608568319,
4958−STORE, 47182608551936, 47182608568319,
4959−STORE, 47182608531456, 47182608551935,
4960−ERASE, 47182608531456, 47182608531456,
4961−STORE, 47182608531456, 47182608551935,
4962−STORE, 47182608560128, 47182608568319,
4963−STORE, 47182608551936, 47182608560127,
4964−ERASE, 47182608551936, 47182608551936,
4965−STORE, 47182608551936, 47182608568319,
4966−ERASE, 47182608551936, 47182608551936,
4967−STORE, 47182608551936, 47182608560127,
4968−STORE, 47182608560128, 47182608568319,
4969−ERASE, 47182608560128, 47182608560128,
4970−STORE, 47182608560128, 47182608568319,
4971−STORE, 47182608568320, 47182608916479,
4972−STORE, 47182608609280, 47182608916479,
4973−STORE, 47182608568320, 47182608609279,
4974−ERASE, 47182608609280, 47182608609280,
4975−STORE, 47182608609280, 47182608891903,
4976−STORE, 47182608891904, 47182608916479,
4977−STORE, 47182608822272, 47182608891903,
4978−STORE, 47182608609280, 47182608822271,
4979−ERASE, 47182608609280, 47182608609280,
4980−STORE, 47182608609280, 47182608822271,
4981−STORE, 47182608887808, 47182608891903,
4982−STORE, 47182608822272, 47182608887807,
4983−ERASE, 47182608822272, 47182608822272,
4984−STORE, 47182608822272, 47182608887807,
4985−ERASE, 47182608891904, 47182608891904,
4986−STORE, 47182608891904, 47182608916479,
4987−STORE, 47182608916480, 47182611177471,
4988−STORE, 47182609068032, 47182611177471,
4989−STORE, 47182608916480, 47182609068031,
4990−ERASE, 47182609068032, 47182609068032,
4991−STORE, 47182609068032, 47182611161087,
4992−STORE, 47182611161088, 47182611177471,
4993−STORE, 47182611169280, 47182611177471,
4994−STORE, 47182611161088, 47182611169279,
4995−ERASE, 47182611161088, 47182611161088,
4996−STORE, 47182611161088, 47182611169279,
4997−ERASE, 47182611169280, 47182611169280,
4998−STORE, 47182611169280, 47182611177471,
4999−STORE, 47182611177472, 47182611312639,
5000−ERASE, 47182611177472, 47182611177472,
5001−STORE, 47182611177472, 47182611202047,
5002−STORE, 47182611202048, 47182611312639,
5003−STORE, 47182611263488, 47182611312639,
5004−STORE, 47182611202048, 47182611263487,
5005−ERASE, 47182611202048, 47182611202048,
5006−STORE, 47182611202048, 47182611263487,
5007−STORE, 47182611288064, 47182611312639,
5008−STORE, 47182611263488, 47182611288063,
5009−ERASE, 47182611263488, 47182611263488,
5010−STORE, 47182611263488, 47182611312639,
5011−ERASE, 47182611263488, 47182611263488,
5012−STORE, 47182611263488, 47182611288063,
5013−STORE, 47182611288064, 47182611312639,
5014−STORE, 47182611296256, 47182611312639,
5015−STORE, 47182611288064, 47182611296255,
5016−ERASE, 47182611288064, 47182611288064,
5017−STORE, 47182611288064, 47182611296255,
5018−ERASE, 47182611296256, 47182611296256,
5019−STORE, 47182611296256, 47182611312639,
5020−STORE, 47182611296256, 47182611320831,
5021−STORE, 47182611320832, 47182611484671,
5022−ERASE, 47182611320832, 47182611320832,
5023−STORE, 47182611320832, 47182611333119,
5024−STORE, 47182611333120, 47182611484671,
5025−STORE, 47182611431424, 47182611484671,
5026−STORE, 47182611333120, 47182611431423,
5027−ERASE, 47182611333120, 47182611333120,
5028−STORE, 47182611333120, 47182611431423,
5029−STORE, 47182611476480, 47182611484671,
5030−STORE, 47182611431424, 47182611476479,
5031−ERASE, 47182611431424, 47182611431424,
5032−STORE, 47182611431424, 47182611484671,
5033−ERASE, 47182611431424, 47182611431424,
5034−STORE, 47182611431424, 47182611476479,
5035−STORE, 47182611476480, 47182611484671,
5036−ERASE, 47182611476480, 47182611476480,
5037−STORE, 47182611476480, 47182611484671,
5038−STORE, 47182611484672, 47182612082687,
5039−STORE, 47182611603456, 47182612082687,
5040−STORE, 47182611484672, 47182611603455,
5041−ERASE, 47182611603456, 47182611603456,
5042−STORE, 47182611603456, 47182612029439,
5043−STORE, 47182612029440, 47182612082687,
5044−STORE, 47182611918848, 47182612029439,
5045−STORE, 47182611603456, 47182611918847,
5046−ERASE, 47182611603456, 47182611603456,
5047−STORE, 47182611603456, 47182611918847,
5048−STORE, 47182612025344, 47182612029439,
5049−STORE, 47182611918848, 47182612025343,
5050−ERASE, 47182611918848, 47182611918848,
5051−STORE, 47182611918848, 47182612025343,

33494 more lines aren’t shown here.

mm/damon/dbgfs.c+7−0
@@ -890,6 +890,7 @@ out: · 889 unmodified lines
890890 static int dbgfs_rm_context(char *name)
891891 {
892892 struct dentry *root, *dir, **new_dirs;
893+ struct inode *inode;
893894 struct damon_ctx **new_ctxs;
894895 int i, j;
895896 int ret = 0;
@@ -905,6 +906,12 @@ static int dbgfs_rm_context(char *name) · 9 unmodified lines
905906 if (!dir)
906907 return -ENOENT;
907908
909+ inode = d_inode(dir);
910+ if (!S_ISDIR(inode->i_mode)) {
911+ ret = -EINVAL;
912+ goto out_dput;
913+ }
914+
908915 new_dirs = kmalloc_array(dbgfs_nr_ctxs - 1, sizeof(*dbgfs_dirs),
909916 GFP_KERNEL);
910917 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
22062206 entry = pte_wrprotect(entry);
22072207 if (!young)
22082208 entry = pte_mkold(entry);
2209− /* NOTE: this may set soft-dirty too on some archs */
2210− if (dirty)
2211− entry = pte_mkdirty(entry);
2209+ /*
2210+ * NOTE: we don't do pte_mkdirty when dirty==true
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+ */
22122215 if (soft_dirty)
22132216 entry = pte_mksoft_dirty(entry);
22142217 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
61116111
61126112 ptl = huge_pte_lock(h, dst_mm, dst_pte);
61136113
6114+ ret = -EIO;
6115+ if (PageHWPoison(page))
6116+ goto out_release_unlock;
6117+
61146118 /*
61156119 * We allow to overwrite a pte marker: consider when both MISSING|WP
61166120 * 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
1111 #define pr_fmt(fmt) "HugeTLB: " fmt
1212
1313 #include <linux/pgtable.h>
14+#include <linux/moduleparam.h>
1415 #include <linux/bootmem_info.h>
1516 #include <asm/pgalloc.h>
1617 #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
124124 {
125125 if ((hardirq_count() >> HARDIRQ_SHIFT) > 1)
126126 return true;
127+ if (in_nmi())
128+ return true;
127129 return kmsan_get_context()->kmsan_in_runtime;
128130 }
129131
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
10801080 int res;
10811081 struct page *hpage = compound_head(p);
10821082 struct address_space *mapping;
1083+ bool extra_pins = false;
10831084
10841085 if (!PageHuge(hpage))
10851086 return MF_DELAYED;
@@ -1087,6 +1088,8 @@ static int me_huge_page(struct page_state *ps, struct page *p) · 1 unmodified line
10871088 mapping = page_mapping(hpage);
10881089 if (mapping) {
10891090 res = truncate_error_page(hpage, page_to_pfn(p), mapping);
1091+ /* The page is kept in page cache. */
1092+ extra_pins = true;
10901093 unlock_page(hpage);
10911094 } else {
10921095 unlock_page(hpage);
@@ -1104,7 +1107,7 @@ static int me_huge_page(struct page_state *ps, struct page *p) · 11 unmodified lines
11041107 }
11051108 }
11061109
1107− if (has_extra_refcount(ps, p, false))
1110+ if (has_extra_refcount(ps, p, extra_pins))
11081111 res = MF_FAILED;
11091112
11101113 return res;
mm/memremap.c+1−0
@@ -335,6 +335,7 @@ void *memremap_pages(struct dev_pagemap *pgmap, int nid) · 334 unmodified lines
335335 WARN(1, "File system DAX not supported\n");
336336 return ERR_PTR(-EINVAL);
337337 }
338+ params.pgprot = pgprot_decrypted(params.pgprot);
338339 break;
339340 case MEMORY_DEVICE_GENERIC:
340341 break;
mm/mmap.c+5−1
@@ -2674,6 +2674,8 @@ cannot_expand: · 2673 unmodified lines
26742674 error = -EINVAL;
26752675 if (file)
26762676 goto close_and_free_vma;
2677+ else if (vma->vm_file)
2678+ goto unmap_and_free_vma;
26772679 else
26782680 goto free_vma;
26792681 }
@@ -2682,6 +2684,8 @@ cannot_expand: · 2 unmodified lines
26822684 error = -ENOMEM;
26832685 if (file)
26842686 goto close_and_free_vma;
2687+ else if (vma->vm_file)
2688+ goto unmap_and_free_vma;
26852689 else
26862690 goto free_vma;
26872691 }
@@ -2751,7 +2755,7 @@ unmap_and_free_vma: · 63 unmodified lines
27512755
27522756 /* Undo any partial mapping done by a device driver. */
27532757 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))
27552759 mapping_unmap_writable(file->f_mapping);
27562760 free_vma:
27572761 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
941941
942942 if (unlikely(size > KMALLOC_MAX_CACHE_SIZE)) {
943943 ret = __kmalloc_large_node(size, flags, node);
944− trace_kmalloc(_RET_IP_, ret, size,
944+ trace_kmalloc(caller, ret, size,
945945 PAGE_SIZE << get_order(size), flags, node);
946946 return ret;
947947 }
@@ -953,7 +953,7 @@ void *__do_kmalloc_node(size_t size, gfp_t flags, int node, unsigned long caller · 5 unmodified lines
953953
954954 ret = __kmem_cache_alloc_node(s, flags, node, size, caller);
955955 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);
957957 return ret;
958958 }
959959
@@ -1010,7 +1010,7 @@ EXPORT_SYMBOL(kfree); · 50 unmodified lines
10101010
10111011 /**
10121012 * __ksize -- Report full size of underlying allocation
1013− * @objp: pointer to the object
1013+ * @object: pointer to the object
10141014 *
10151015 * This should only be used internally to query the true size of allocations.
10161016 * 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
10181018 * the originally requested allocation size may trigger KASAN, UBSAN_BOUNDS,
10191019 * and/or FORTIFY_SOURCE.
10201020 *
1021− * Return: size of the actual memory used by @objp in bytes
1021+ * Return: size of the actual memory used by @object in bytes
10221022 */
10231023 size_t __ksize(const void *object)
10241024 {
@@ -1040,7 +1040,6 @@ size_t __ksize(const void *object) · 15 unmodified lines
10401040 return slab_ksize(folio_slab(folio)->slab_cache);
10411041 }
10421042
1043−#ifdef CONFIG_TRACING
10441043 void *kmalloc_trace(struct kmem_cache *s, gfp_t gfpflags, size_t size)
10451044 {
10461045 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
10641063 return ret;
10651064 }
10661065 EXPORT_SYMBOL(kmalloc_node_trace);
1067−#endif /* !CONFIG_TRACING */
10681066 #endif /* !CONFIG_SLOB */
10691067
10701068 gfp_t kmalloc_fix_flags(gfp_t flags)
@@ -1411,20 +1409,6 @@ void kfree_sensitive(const void *p) · 340 unmodified lines
14111409 }
14121410 EXPORT_SYMBOL(kfree_sensitive);
14131411
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− */
14281412 size_t ksize(const void *objp)
14291413 {
14301414 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
6464 pte_t _dst_pte, *dst_pte;
6565 bool writable = dst_vma->vm_flags & VM_WRITE;
6666 bool vm_shared = dst_vma->vm_flags & VM_SHARED;
67− bool page_in_cache = page->mapping;
67+ bool page_in_cache = page_mapping(page);
6868 spinlock_t *ptl;
6969 struct inode *inode;
7070 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
450450
451451 /* insert new receiver (dev,canid,mask) -> (func,data) */
452452
453− if (dev && dev->type != ARPHRD_CAN)
453+ if (dev && (dev->type != ARPHRD_CAN || !can_get_ml_priv(dev)))
454454 return -ENODEV;
455455
456456 if (dev && !net_eq(net, dev_net(dev)))
@@ -902,6 +902,7 @@ out_pernet: · 445 unmodified lines
902902 static __exit void can_exit(void)
903903 {
904904 /* protocol unregister */
905+ dev_remove_pack(&canxl_packet);
905906 dev_remove_pack(&canfd_packet);
906907 dev_remove_pack(&can_packet);
907908 sock_unregister(PF_CAN);
net/can/isotp.c+38−33
@@ -111,6 +111,9 @@ MODULE_ALIAS("can-proto-6"); · 110 unmodified lines
111111 #define ISOTP_FC_WT 1 /* wait */
112112 #define ISOTP_FC_OVFLW 2 /* overflow */
113113
114+#define ISOTP_FC_TIMEOUT 1 /* 1 sec */
115+#define ISOTP_ECHO_TIMEOUT 2 /* 2 secs */
116+
114117 enum {
115118 ISOTP_IDLE = 0,
116119 ISOTP_WAIT_FIRST_FC,
@@ -258,7 +261,8 @@ static int isotp_send_fc(struct sock *sk, int ae, u8 flowstatus) · 141 unmodified lines
258261 so->lastrxcf_tstamp = ktime_set(0, 0);
259262
260263 /* 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);
262266 return 0;
263267 }
264268
@@ -344,6 +348,8 @@ static int check_pad(struct isotp_sock *so, struct canfd_frame *cf, · 79 unmodified lines
344348 return 0;
345349 }
346350
351+static void isotp_send_cframe(struct isotp_sock *so);
352+
347353 static int isotp_rcv_fc(struct isotp_sock *so, struct canfd_frame *cf, int ae)
348354 {
349355 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
398404 case ISOTP_FC_CTS:
399405 so->tx.bs = 0;
400406 so->tx.state = ISOTP_SENDING;
401− /* start cyclic timer for sending CF frame */
402− hrtimer_start(&so->txtimer, so->tx_gap,
407+ /* send CF frame and enable echo timeout handling */
408+ hrtimer_start(&so->txtimer, ktime_set(ISOTP_ECHO_TIMEOUT, 0),
403409 HRTIMER_MODE_REL_SOFT);
410+ isotp_send_cframe(so);
404411 break;
405412
406413 case ISOTP_FC_WT:
407414 /* 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),
409416 HRTIMER_MODE_REL_SOFT);
410417 break;
411418
@@ -600,7 +607,7 @@ static int isotp_rcv_cf(struct sock *sk, struct canfd_frame *cf, int ae, · 188 unmodified lines
600607 /* perform blocksize handling, if enabled */
601608 if (!so->rxfc.bs || ++so->rx.bs < so->rxfc.bs) {
602609 /* start rx timeout watchdog */
603− hrtimer_start(&so->rxtimer, ktime_set(1, 0),
610+ hrtimer_start(&so->rxtimer, ktime_set(ISOTP_FC_TIMEOUT, 0),
604611 HRTIMER_MODE_REL_SOFT);
605612 return 0;
606613 }
@@ -829,7 +836,7 @@ static void isotp_rcv_echo(struct sk_buff *skb, void *data) · 222 unmodified lines
829836 struct isotp_sock *so = isotp_sk(sk);
830837 struct canfd_frame *cf = (struct canfd_frame *)skb->data;
831838
832− /* only handle my own local echo skb's */
839+ /* only handle my own local echo CF/SF skb's (no FF!) */
833840 if (skb->sk != sk || so->cfecho != *(u32 *)cf->data)
834841 return;
835842
@@ -849,13 +856,16 @@ static void isotp_rcv_echo(struct sk_buff *skb, void *data) · 13 unmodified lines
849856 if (so->txfc.bs && so->tx.bs >= so->txfc.bs) {
850857 /* stop and wait for FC with timeout */
851858 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),
853860 HRTIMER_MODE_REL_SOFT);
854861 return;
855862 }
856863
857864 /* no gap between data frames needed => use burst mode */
858865 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);
859869 isotp_send_cframe(so);
860870 return;
861871 }
@@ -879,7 +889,7 @@ static enum hrtimer_restart isotp_tx_timer_handler(struct hrtimer *hrtimer) · 17 unmodified lines
879889 /* start timeout for unlikely lost echo skb */
880890 hrtimer_set_expires(&so->txtimer,
881891 ktime_add(ktime_get(),
882− ktime_set(2, 0)));
892+ ktime_set(ISOTP_ECHO_TIMEOUT, 0)));
883893 restart = HRTIMER_RESTART;
884894
885895 /* push out the next consecutive frame */
@@ -907,7 +917,8 @@ static enum hrtimer_restart isotp_tx_timer_handler(struct hrtimer *hrtimer) · 21 unmodified lines
907917 break;
908918
909919 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);
911922 }
912923
913924 return restart;
@@ -923,7 +934,7 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 9 unmodified lines
923934 struct canfd_frame *cf;
924935 int ae = (so->opt.flags & CAN_ISOTP_EXTEND_ADDR) ? 1 : 0;
925936 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;
927938 int off;
928939 int err;
929940
@@ -942,6 +953,8 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 12 unmodified lines
942953 err = wait_event_interruptible(so->wait, so->tx.state == ISOTP_IDLE);
943954 if (err)
944955 goto err_out;
956+
957+ so->tx.state = ISOTP_SENDING;
945958 }
946959
947960 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
986999 cf = (struct canfd_frame *)skb->data;
9871000 skb_put_zero(skb, so->ll.mtu);
9881001
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+
9891006 /* check for single frame transmission depending on TX_DL */
9901007 if (size <= so->tx.ll_dl - SF_PCI_SZ4 - ae - off) {
9911008 /* 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
10111028 else
10121029 cf->data[ae] |= size;
10131030
1014− so->tx.state = ISOTP_IDLE;
1015− wake_up_interruptible(&so->wait);
1016−
1017− /* don't enable wait queue for a single frame transmission */
1018− wait_tx_done = 0;
1031+ /* set CF echo tag for isotp_rcv_echo() (SF-mode) */
1032+ so->cfecho = *(u32 *)cf->data;
10191033 } else {
10201034 /* send first frame */
10211035
@@ -1031,31 +1045,23 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 9 unmodified lines
10311045 /* disable wait for FCs due to activated block size */
10321046 so->txfc.bs = 0;
10331047
1034− /* cfecho should have been zero'ed by init */
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 */
1048+ /* set CF echo tag for isotp_rcv_echo() (CF-mode) */
10401049 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;
10471050 } else {
10481051 /* standard flow control check */
10491052 so->tx.state = ISOTP_WAIT_FIRST_FC;
10501053
10511054 /* start timeout for FC */
1052− hrtimer_sec = 1;
1053− }
1055+ hrtimer_sec = ISOTP_FC_TIMEOUT;
10541056
1055− hrtimer_start(&so->txtimer, ktime_set(hrtimer_sec, 0),
1056− HRTIMER_MODE_REL_SOFT);
1057+ /* no CF echo tag for isotp_rcv_echo() (FF-mode) */
1058+ so->cfecho = 0;
1059+ }
10571060 }
10581061
1062+ hrtimer_start(&so->txtimer, ktime_set(hrtimer_sec, 0),
1063+ HRTIMER_MODE_REL_SOFT);
1064+
10591065 /* send the first or only CAN frame */
10601066 cf->flags = so->ll.tx_flags;
10611067
@@ -1068,8 +1074,7 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 6 unmodified lines
10681074 __func__, ERR_PTR(err));
10691075
10701076 /* no transmission -> no timeout monitoring */
1071− if (hrtimer_sec)
1072− hrtimer_cancel(&so->txtimer);
1077+ hrtimer_cancel(&so->txtimer);
10731078
10741079 /* reset consecutive frame echo tag */
10751080 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
336336 /* re-claim the CAN_HDR from the SKB */
337337 cf = skb_push(skb, J1939_CAN_HDR);
338338
339+ /* initialize header structure */
340+ memset(cf, 0, J1939_CAN_HDR);
341+
339342 /* make it a full can frame again */
340343 skb_put(skb, J1939_CAN_FTR + (8 - dlc));
341344
net/core/skbuff.c+19−17
@@ -4134,23 +4134,25 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb, · 4133 unmodified lines
41344134 int i = 0;
41354135 int pos;
41364136
4137− if (list_skb && !list_skb->head_frag && skb_headlen(list_skb) &&
4138− (skb_shinfo(head_skb)->gso_type & SKB_GSO_DODGY)) {
4139− /* gso_size is untrusted, and we have a frag_list with a linear
4140− * non head_frag head.
4141− *
4142− * (we assume checking the first list_skb member suffices;
4143− * i.e if either of the list_skb members have non head_frag
4144− * head, then the first one has too).
4145− *
4146− * If head_skb's headlen does not fit requested gso_size, it
4147− * means that the frag_list members do NOT terminate on exact
4148− * gso_size boundaries. Hence we cannot perform skb_frag_t page
4149− * sharing. Therefore we must fallback to copying the frag_list
4150− * skbs; we do so by disabling SG.
4151− */
4152− if (mss != GSO_BY_FRAGS && mss != skb_headlen(head_skb))
4153− features &= ~NETIF_F_SG;
4137+ if ((skb_shinfo(head_skb)->gso_type & SKB_GSO_DODGY) &&
4138+ mss != GSO_BY_FRAGS && mss != skb_headlen(head_skb)) {
4139+ struct sk_buff *check_skb;
4140+
4141+ for (check_skb = list_skb; check_skb; check_skb = check_skb->next) {
4142+ if (skb_headlen(check_skb) && !check_skb->head_frag) {
4143+ /* gso_size is untrusted, and we have a frag_list with
4144+ * a linear non head_frag item.
4145+ *
4146+ * If head_skb's headlen does not fit requested gso_size,
4147+ * it means that the frag_list members do NOT terminate
4148+ * on exact gso_size boundaries. Hence we cannot perform
4149+ * skb_frag_t page sharing. Therefore we must fallback to
4150+ * copying the frag_list skbs; we do so by disabling SG.
4151+ */
4152+ features &= ~NETIF_F_SG;
4153+ break;
4154+ }
4155+ }
41544156 }
41554157
41564158 __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
803803 }
804804 }
805805
806−void sk_psock_stop(struct sk_psock *psock, bool wait)
806+void sk_psock_stop(struct sk_psock *psock)
807807 {
808808 spin_lock_bh(&psock->ingress_lock);
809809 sk_psock_clear_state(psock, SK_PSOCK_TX_ENABLED);
810810 sk_psock_cork_free(psock);
811811 __sk_psock_zap_ingress(psock);
812812 spin_unlock_bh(&psock->ingress_lock);
813−
814− if (wait)
815− cancel_work_sync(&psock->work);
816813 }
817814
818815 static 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
850847 sk_psock_stop_verdict(sk, psock);
851848 write_unlock_bh(&sk->sk_callback_lock);
852849
853− sk_psock_stop(psock, false);
850+ sk_psock_stop(psock);
854851
855852 INIT_RCU_WORK(&psock->rwork, sk_psock_destroy);
856853 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
15961596 saved_destroy = psock->saved_destroy;
15971597 sock_map_remove_links(sk, psock);
15981598 rcu_read_unlock();
1599− sk_psock_stop(psock, false);
1599+ sk_psock_stop(psock);
16001600 sk_psock_put(sk, psock);
16011601 saved_destroy(sk);
16021602 }
@@ -1619,9 +1619,10 @@ void sock_map_close(struct sock *sk, long timeout) · 16 unmodified lines
16191619 saved_close = psock->saved_close;
16201620 sock_map_remove_links(sk, psock);
16211621 rcu_read_unlock();
1622− sk_psock_stop(psock, true);
1623− sk_psock_put(sk, psock);
1622+ sk_psock_stop(psock);
16241623 release_sock(sk);
1624+ cancel_work_sync(&psock->work);
1625+ sk_psock_put(sk, psock);
16251626 saved_close(sk, timeout);
16261627 }
16271628 EXPORT_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
36473647 case TCP_REPAIR_OPTIONS:
36483648 if (!tp->repair)
36493649 err = -EINVAL;
3650− else if (sk->sk_state == TCP_ESTABLISHED)
3650+ else if (sk->sk_state == TCP_ESTABLISHED && !tp->bytes_sent)
36513651 err = tcp_repair_options_est(sk, optval, optlen);
36523652 else
36533653 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
278278 {
279279 bool cork = false, enospc = sk_msg_full(msg);
280280 struct sock *sk_redir;
281− u32 tosend, delta = 0;
281+ u32 tosend, origsize, sent, delta = 0;
282282 u32 eval = __SK_NONE;
283283 int ret;
284284
@@ -333,10 +333,12 @@ more_data: · 48 unmodified lines
333333 cork = true;
334334 psock->cork = NULL;
335335 }
336− sk_msg_return(sk, msg, msg->sg.size);
336+ sk_msg_return(sk, msg, tosend);
337337 release_sock(sk);
338338
339+ origsize = msg->sg.size;
339340 ret = tcp_bpf_sendmsg_redir(sk_redir, msg, tosend, flags);
341+ sent = origsize - msg->sg.size;
340342
341343 if (eval == __SK_REDIRECT)
342344 sock_put(sk_redir);
@@ -375,7 +377,7 @@ more_data: · 32 unmodified lines
375377 msg->sg.data[msg->sg.start].page_link &&
376378 msg->sg.data[msg->sg.start].length) {
377379 if (eval == __SK_REDIRECT)
378− sk_mem_charge(sk, msg->sg.size);
380+ sk_mem_charge(sk, tosend - sent);
379381 goto more_data;
380382 }
381383 }
net/ipv6/addrlabel.c+1−0
@@ -437,6 +437,7 @@ static void ip6addrlbl_putmsg(struct nlmsghdr *nlh, · 436 unmodified lines
437437 {
438438 struct ifaddrlblmsg *ifal = nlmsg_data(nlh);
439439 ifal->ifal_family = AF_INET6;
440+ ifal->__ifal_reserved = 0;
440441 ifal->ifal_prefixlen = prefixlen;
441442 ifal->ifal_flags = 0;
442443 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
14391439 ieee80211_led_exit(local);
14401440 destroy_workqueue(local->workqueue);
14411441 fail_workqueue:
1442− if (local->wiphy_ciphers_allocated)
1442+ if (local->wiphy_ciphers_allocated) {
14431443 kfree(local->hw.wiphy->cipher_suites);
1444+ local->wiphy_ciphers_allocated = false;
1445+ }
14441446 kfree(local->int_scan_req);
14451447 return result;
14461448 }
@@ -1508,8 +1510,10 @@ void ieee80211_free_hw(struct ieee80211_hw *hw) · 61 unmodified lines
15081510 mutex_destroy(&local->iflist_mtx);
15091511 mutex_destroy(&local->mtx);
15101512
1511− if (local->wiphy_ciphers_allocated)
1513+ if (local->wiphy_ciphers_allocated) {
15121514 kfree(local->hw.wiphy->cipher_suites);
1515+ local->wiphy_ciphers_allocated = false;
1516+ }
15131517
15141518 idr_for_each(&local->ack_status_frames,
15151519 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
710710 void mesh_path_discard_frame(struct ieee80211_sub_if_data *sdata,
711711 struct sk_buff *skb)
712712 {
713− kfree_skb(skb);
713+ ieee80211_free_txskb(&sdata->local->hw, skb);
714714 sdata->u.mesh.mshstats.dropped_frames_no_route++;
715715 }
716716
net/mac80211/s1g.c+3−0
@@ -112,6 +112,9 @@ ieee80211_s1g_rx_twt_setup(struct ieee80211_sub_if_data *sdata, · 111 unmodified lines
112112 goto out;
113113 }
114114
115+ /* TWT Information not supported yet */
116+ twt->control |= IEEE80211_TWT_CONTROL_RX_DISABLED;
117+
115118 drv_add_twt_setup(sdata->local, sdata, &sta->sta, twt);
116119 out:
117120 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
44184418 if (likely(!is_multicast_ether_addr(eth->h_dest)))
44194419 goto normal;
44204420
4421+ if (unlikely(!ieee80211_sdata_running(sdata))) {
4422+ kfree_skb(skb);
4423+ return NETDEV_TX_OK;
4424+ }
4425+
44214426 if (unlikely(ieee80211_multicast_to_unicast(skb, dev))) {
44224427 struct sk_buff_head queue;
44234428
net/mctp/af_mctp.c+3−1
@@ -665,12 +665,14 @@ static __init int mctp_init(void) · 664 unmodified lines
665665
666666 rc = mctp_neigh_init();
667667 if (rc)
668− goto err_unreg_proto;
668+ goto err_unreg_routes;
669669
670670 mctp_device_init();
671671
672672 return 0;
673673
674+err_unreg_routes:
675+ mctp_routes_exit();
674676 err_unreg_proto:
675677 proto_unregister(&mctp_proto);
676678 err_unreg_sock:
net/mctp/route.c+1−1
@@ -1400,7 +1400,7 @@ int __init mctp_routes_init(void) · 1399 unmodified lines
14001400 return register_pernet_subsys(&mctp_net_ops);
14011401 }
14021402
1403−void __exit mctp_routes_exit(void)
1403+void mctp_routes_exit(void)
14041404 {
14051405 unregister_pernet_subsys(&mctp_net_ops);
14061406 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
1009010090 struct nftables_pernet *nft_net = nft_pernet(net);
1009110091
1009210092 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))
1009410095 __nf_tables_abort(net, NFNL_ABORT_NONE);
1009510096 __nft_release_tables(net);
1009610097 mutex_unlock(&nft_net->commit_mutex);
net/netfilter/nfnetlink.c+1−0
@@ -294,6 +294,7 @@ replay: · 293 unmodified lines
294294 nfnl_lock(subsys_id);
295295 if (nfnl_dereference_protected(subsys_id) != ss ||
296296 nfnetlink_find_client(type, ss) != nc) {
297+ nfnl_unlock(subsys_id);
297298 err = -EAGAIN;
298299 break;
299300 }
net/sctp/outqueue.c+8−5
@@ -384,6 +384,7 @@ static int sctp_prsctp_prune_unsent(struct sctp_association *asoc, · 383 unmodified lines
384384 {
385385 struct sctp_outq *q = &asoc->outqueue;
386386 struct sctp_chunk *chk, *temp;
387+ struct sctp_stream_out *sout;
387388
388389 q->sched->unsched_all(&asoc->stream);
389390
@@ -398,12 +399,14 @@ static int sctp_prsctp_prune_unsent(struct sctp_association *asoc, · 8 unmodified lines
398399 sctp_sched_dequeue_common(q, chk);
399400 asoc->sent_cnt_removable--;
400401 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);
404402
405− streamout->ext->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++;
406− }
403+ sout = SCTP_SO(&asoc->stream, chk->sinfo.sinfo_stream);
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;
407410
408411 msg_len -= chk->skb->truesize + sizeof(struct sctp_chunk);
409412 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
880880 };
881881
882882 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))
884884 return -EINVAL;
885885
886886 depth = ntohl(ntq->depth);
net/wireless/reg.c+9−3
@@ -1084,6 +1084,8 @@ MODULE_FIRMWARE("regulatory.db"); · 1083 unmodified lines
10841084
10851085 static int query_regdb_file(const char *alpha2)
10861086 {
1087+ int err;
1088+
10871089 ASSERT_RTNL();
10881090
10891091 if (regdb)
@@ -1093,9 +1095,13 @@ static int query_regdb_file(const char *alpha2) · 3 unmodified lines
10931095 if (!alpha2)
10941096 return -ENOMEM;
10951097
1096− return request_firmware_nowait(THIS_MODULE, true, "regulatory.db",
1097− &reg_pdev->dev, GFP_KERNEL,
1098− (void *)alpha2, regdb_fw_cb);
1098+ err = request_firmware_nowait(THIS_MODULE, true, "regulatory.db",
1099+ &reg_pdev->dev, GFP_KERNEL,
1100+ (void *)alpha2, regdb_fw_cb);
1101+ if (err)
1102+ kfree(alpha2);
1103+
1104+ return err;
10991105 }
11001106
11011107 int 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
16741674 if (old == rcu_access_pointer(known->pub.ies))
16751675 rcu_assign_pointer(known->pub.ies, new->pub.beacon_ies);
16761676
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);
16781680
16791681 if (old)
16801682 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
15571557 tmp = result;
15581558 tmp *= SCALE;
15591559 do_div(tmp, mcs_divisors[rate->mcs]);
1560− result = tmp;
15611560
15621561 /* and take NSS */
1563− result = (result * rate->nss) / 8;
1562+ tmp *= rate->nss;
1563+ do_div(tmp, 8);
1564+
1565+ result = tmp;
15641566
15651567 return result / 10000;
15661568 }
scripts/min-tool-version.sh+1−1
@@ -25,7 +25,7 @@ icc) · 24 unmodified lines
2525 ;;
2626 llvm)
2727 if [ "$SRCARCH" = s390 ]; then
28− echo 14.0.0
28+ echo 15.0.0
2929 else
3030 echo 11.0.0
3131 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
402402 goto err_clk2;
403403
404404 irq = platform_get_irq(dev, 0);
405− if (!irq)
405+ if (irq < 0) {
406+ ret = irq;
406407 goto err_irq;
408+ }
407409
408410 ret = request_irq(irq, pxa2xx_ac97_irq, 0, "AC97", NULL);
409411 if (ret < 0)
sound/core/memalloc.c+8−7
@@ -9,6 +9,7 @@ · 8 unmodified lines
99 #include <linux/slab.h>
1010 #include <linux/mm.h>
1111 #include <linux/dma-mapping.h>
12+#include <linux/dma-map-ops.h>
1213 #include <linux/genalloc.h>
1314 #include <linux/highmem.h>
1415 #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
543544
544545 sgt = dma_alloc_noncontiguous(dmab->dev.dev, size, dmab->dev.dir,
545546 DEFAULT_GFP, 0);
546− if (!sgt) {
547547 #ifdef CONFIG_SND_DMA_SGBUF
548+ if (!sgt && !get_dma_ops(dmab->dev.dev)) {
548549 if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_WC_SG)
549550 dmab->dev.type = SNDRV_DMA_TYPE_DEV_WC_SG_FALLBACK;
550551 else
551552 dmab->dev.type = SNDRV_DMA_TYPE_DEV_SG_FALLBACK;
552553 return snd_dma_sg_fallback_alloc(dmab, size);
553−#else
554− return NULL;
555−#endif
556554 }
555+#endif
556+ if (!sgt)
557+ return NULL;
557558
558559 dmab->dev.need_sync = dma_need_sync(dmab->dev.dev,
559560 sg_dma_address(sgt->sgl));
@@ -857,7 +858,7 @@ static const struct snd_malloc_ops snd_dma_noncoherent_ops = { · 297 unmodified lines
857858 /*
858859 * Entry points
859860 */
860−static const struct snd_malloc_ops *dma_ops[] = {
861+static const struct snd_malloc_ops *snd_dma_ops[] = {
861862 [SNDRV_DMA_TYPE_CONTINUOUS] = &snd_dma_continuous_ops,
862863 [SNDRV_DMA_TYPE_VMALLOC] = &snd_dma_vmalloc_ops,
863864 #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
883884 if (WARN_ON_ONCE(!dmab))
884885 return NULL;
885886 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)))
887888 return NULL;
888− return dma_ops[dmab->dev.type];
889+ return snd_dma_ops[dmab->dev.type];
889890 }
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
346346 return -ENOMEM;
347347 kobject_init(kobj, &widget_ktype);
348348 err = kobject_add(kobj, parent, "%02x", nid);
349− if (err < 0)
349+ if (err < 0) {
350+ kobject_put(kobj);
350351 return err;
352+ }
351353 err = sysfs_create_group(kobj, group);
352354 if (err < 0) {
353355 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
485485 int timeout;
486486
487487 /*
488− * the codecs are sharing the first link setting by default
489− * If other links are enabled for stream, they need similar fix
488+ * Changes to LCTL.SCF are only needed for the first multi-link dealing
489+ * with external codecs
490490 */
491491 val = readl(bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL);
492492 val &= ~AZX_ML_LCTL_SPA;
@@ -513,7 +513,7 @@ static void intel_init_lctl(struct azx *chip) · 20 unmodified lines
513513
514514 /* 0. check lctl register value is correct or not */
515515 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 */
517517 if ((val & AZX_ML_LCTL_SCF) != 0)
518518 return;
519519
@@ -531,7 +531,7 @@ static void intel_init_lctl(struct azx *chip) · 11 unmodified lines
531531 if (ret)
532532 goto set_spa;
533533
534− /* 2. update SCF to select a properly audio clock*/
534+ /* 2. update SCF to select an audio clock different from 6MHz */
535535 val &= ~AZX_ML_LCTL_SCF;
536536 val |= intel_get_lctl_scf(chip);
537537 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
27112711 { PCI_DEVICE(0x1002, 0xab28),
27122712 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS |
27132713 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 },
27142717 { PCI_DEVICE(0x1002, 0xab38),
27152718 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS |
27162719 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
13061306 SND_PCI_QUIRK(0x1458, 0xA026, "Gigabyte G1.Sniper Z97", QUIRK_R3DI),
13071307 SND_PCI_QUIRK(0x1458, 0xA036, "Gigabyte GA-Z170X-Gaming 7", QUIRK_R3DI),
13081308 SND_PCI_QUIRK(0x3842, 0x1038, "EVGA X99 Classified", QUIRK_R3DI),
1309+ SND_PCI_QUIRK(0x3842, 0x1055, "EVGA Z390 DARK", QUIRK_R3DI),
13091310 SND_PCI_QUIRK(0x1102, 0x0013, "Recon3D", QUIRK_R3D),
13101311 SND_PCI_QUIRK(0x1102, 0x0018, "Recon3D", QUIRK_R3D),
13111312 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
94049404 SND_PCI_QUIRK(0x1043, 0x1e8e, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA401),
94059405 SND_PCI_QUIRK(0x1043, 0x1c52, "ASUS Zephyrus G15 2022", ALC289_FIXUP_ASUS_GA401),
94069406 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),
94079408 SND_PCI_QUIRK(0x1043, 0x1f92, "ASUS ROG Flow X16", ALC289_FIXUP_ASUS_GA401),
94089409 SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2),
94099410 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
96089609 SND_PCI_QUIRK(0x17aa, 0x511f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
96099610 SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
96109611 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),
96119613 SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS),
96129614 SND_PCI_QUIRK(0x19e5, 0x320f, "Huawei WRT-WX9 ", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE),
96139615 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
2424 #include "adau-utils.h"
2525
2626 struct adau1372 {
27− struct clk *clk;
2827 struct regmap *regmap;
2928 void (*switch_mode)(struct device *dev);
3029 bool use_pll;
@@ -206,10 +205,10 @@ static const struct snd_kcontrol_new adau1372_controls[] = { · 175 unmodified lines
206205 2, 1, 0, adau1372_pga_boost_tlv),
207206 SOC_SINGLE_TLV("PGA 3 Boost Capture Volume", ADAU1372_REG_PGA_BOOST,
208207 3, 1, 0, adau1372_pga_boost_tlv),
209− SOC_SINGLE("PGA 0 Capture Switch", ADAU1372_REG_PGA_CTRL(0), 7, 1, 1),
210− SOC_SINGLE("PGA 1 Capture Switch", ADAU1372_REG_PGA_CTRL(1), 7, 1, 1),
211− SOC_SINGLE("PGA 2 Capture Switch", ADAU1372_REG_PGA_CTRL(2), 7, 1, 1),
212− SOC_SINGLE("PGA 3 Capture Switch", ADAU1372_REG_PGA_CTRL(3), 7, 1, 1),
208+ SOC_SINGLE("PGA 0 Capture Switch", ADAU1372_REG_PGA_CTRL(0), 7, 1, 0),
209+ SOC_SINGLE("PGA 1 Capture Switch", ADAU1372_REG_PGA_CTRL(1), 7, 1, 0),
210+ SOC_SINGLE("PGA 2 Capture Switch", ADAU1372_REG_PGA_CTRL(2), 7, 1, 0),
211+ SOC_SINGLE("PGA 3 Capture Switch", ADAU1372_REG_PGA_CTRL(3), 7, 1, 0),
213212
214213 SOC_SINGLE_TLV("DAC 0 Playback Volume", ADAU1372_REG_DAC_VOL(0),
215214 0, 0xff, 1, adau1372_digital_tlv),
@@ -369,10 +368,10 @@ static const struct snd_soc_dapm_widget adau1372_dapm_widgets[] = { · 153 unmodified lines
369368 SND_SOC_DAPM_SUPPLY("MICBIAS0", ADAU1372_REG_MICBIAS, 4, 0, NULL, 0),
370369 SND_SOC_DAPM_SUPPLY("MICBIAS1", ADAU1372_REG_MICBIAS, 5, 0, NULL, 0),
371370
372− SND_SOC_DAPM_PGA("PGA0", ADAU1372_REG_PGA_CTRL(0), 6, 0, NULL, 0),
373− SND_SOC_DAPM_PGA("PGA1", ADAU1372_REG_PGA_CTRL(1), 6, 0, NULL, 0),
374− SND_SOC_DAPM_PGA("PGA2", ADAU1372_REG_PGA_CTRL(2), 6, 0, NULL, 0),
375− SND_SOC_DAPM_PGA("PGA3", ADAU1372_REG_PGA_CTRL(3), 6, 0, NULL, 0),
371+ SND_SOC_DAPM_PGA("PGA0", ADAU1372_REG_PGA_CTRL(0), 6, 1, NULL, 0),
372+ SND_SOC_DAPM_PGA("PGA1", ADAU1372_REG_PGA_CTRL(1), 6, 1, NULL, 0),
373+ SND_SOC_DAPM_PGA("PGA2", ADAU1372_REG_PGA_CTRL(2), 6, 1, NULL, 0),
374+ SND_SOC_DAPM_PGA("PGA3", ADAU1372_REG_PGA_CTRL(3), 6, 1, NULL, 0),
376375 SND_SOC_DAPM_ADC("ADC0", NULL, ADAU1372_REG_ADC_CTRL2, 0, 0),
377376 SND_SOC_DAPM_ADC("ADC1", NULL, ADAU1372_REG_ADC_CTRL2, 1, 0),
378377 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
662661 case 16:
663662 sai1 = ADAU1372_SAI1_BCLKRATE;
664663 break;
664+ case 24:
665665 case 32:
666666 sai1 = 0;
667667 break;
@@ -699,6 +699,7 @@ static int adau1372_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, · 31 unmodified lines
699699 case 16:
700700 sai1 = ADAU1372_SAI1_BCLK_TDMC;
701701 break;
702+ case 24:
702703 case 32:
703704 sai1 = 0;
704705 break;
@@ -869,7 +870,9 @@ static const struct snd_soc_dai_ops adau1372_dai_ops = { · 164 unmodified lines
869870 .startup = adau1372_startup,
870871 };
871872
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)
873876
874877 static struct snd_soc_dai_driver adau1372_dai_driver = {
875878 .name = "adau1372",
@@ -924,9 +927,9 @@ int adau1372_probe(struct device *dev, struct regmap *regmap, · 48 unmodified lines
924927 if (!adau1372)
925928 return -ENOMEM;
926929
927− adau1372->clk = devm_clk_get(dev, "mclk");
928− if (IS_ERR(adau1372->clk))
929− return PTR_ERR(adau1372->clk);
930+ adau1372->mclk = devm_clk_get(dev, "mclk");
931+ if (IS_ERR(adau1372->mclk))
932+ return PTR_ERR(adau1372->mclk);
930933
931934 adau1372->pd_gpio = devm_gpiod_get_optional(dev, "powerdown", GPIOD_OUT_HIGH);
932935 if (IS_ERR(adau1372->pd_gpio))
@@ -946,7 +949,7 @@ int adau1372_probe(struct device *dev, struct regmap *regmap, · 13 unmodified lines
946949 * 12.288MHz. Automatically choose a valid configuration from the
947950 * external clock.
948951 */
949− rate = clk_get_rate(adau1372->clk);
952+ rate = clk_get_rate(adau1372->mclk);
950953
951954 switch (rate) {
952955 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
742742 return NULL;
743743 }
744744
745+/* register card if we reach to the last interface or to the specified
746+ * one given via option
747+ */
748+static 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+
745757 /*
746758 * probe the active usb device
747759 *
@@ -880,15 +892,9 @@ static int usb_audio_probe(struct usb_interface *intf, · 132 unmodified lines
880892 chip->need_delayed_register = false; /* clear again */
881893 }
882894
883− /* register card if we reach to the last interface or to the specified
884− * one given via option
885− */
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− }
895+ err = try_to_register_card(chip, ifnum);
896+ if (err < 0)
897+ goto __error_no_register;
892898
893899 if (chip->quirk_flags & QUIRK_FLAG_SHARE_MEDIA_DEVICE) {
894900 /* 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
907913 return 0;
908914
909915 __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:
910921 if (chip) {
911922 /* chip->active is inside the chip->card object,
912923 * 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
931931 usb_audio_dbg(chip, "Closing EP 0x%x (count %d)\n",
932932 ep->ep_num, ep->opened);
933933
934− if (!--ep->iface_ref->opened)
934+ if (!--ep->iface_ref->opened &&
935+ !(chip->quirk_flags & QUIRK_FLAG_IFACE_SKIP_CLOSE))
935936 endpoint_set_interface(chip, ep, false);
936937
937938 if (!--ep->opened) {
sound/usb/quirks-table.h+4−0
@@ -2049,6 +2049,10 @@ YAMAHA_DEVICE(0x7010, "UB99"), · 2048 unmodified lines
20492049 }
20502050 }
20512051 },
2052+{
2053+ /* M-Audio Micro */
2054+ USB_DEVICE_VENDOR_SPEC(0x0763, 0x201a),
2055+},
20522056 {
20532057 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030),
20542058 .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
376376
377377 static int create_autodetect_quirk(struct snd_usb_audio *chip,
378378 struct usb_interface *iface,
379− struct usb_driver *driver)
379+ struct usb_driver *driver,
380+ const struct snd_usb_audio_quirk *quirk)
380381 {
381382 int err;
382383
@@ -386,45 +387,6 @@ static int create_autodetect_quirk(struct snd_usb_audio *chip, · 3 unmodified lines
386387 return err;
387388 }
388389
389−static 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−
428390 /*
429391 * Create a stream for an Edirol UA-700/UA-25/UA-4FX interface.
430392 * 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
554516 static const quirk_func_t quirk_funcs[] = {
555517 [QUIRK_IGNORE_INTERFACE] = ignore_interface_quirk,
556518 [QUIRK_COMPOSITE] = create_composite_quirk,
557− [QUIRK_AUTODETECT] = create_autodetect_quirks,
519+ [QUIRK_AUTODETECT] = create_autodetect_quirk,
558520 [QUIRK_MIDI_STANDARD_INTERFACE] = create_any_midi_quirk,
559521 [QUIRK_MIDI_FIXED_ENDPOINT] = create_any_midi_quirk,
560522 [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
19131875 /* XMOS based USB DACs */
19141876 switch (chip->usb_id) {
19151877 case USB_ID(0x1511, 0x0037): /* AURALiC VEGA */
1878+ case USB_ID(0x21ed, 0xd75a): /* Accuphase DAC-60 option card */
19161879 case USB_ID(0x2522, 0x0012): /* LH Labs VI DAC Infinity */
19171880 case USB_ID(0x2772, 0x0230): /* Pro-Ject Pre Box S2 Digital */
19181881 if (fp->altsetting == 2)
@@ -2185,6 +2148,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { · 266 unmodified lines
21852148 QUIRK_FLAG_GENERIC_IMPLICIT_FB),
21862149 DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */
21872150 QUIRK_FLAG_GENERIC_IMPLICIT_FB),
2151+ DEVICE_FLG(0x0525, 0xa4ad, /* Hamedal C20 usb camero */
2152+ QUIRK_FLAG_IFACE_SKIP_CLOSE),
21882153
21892154 /* Vendor matches */
21902155 VENDOR_FLG(0x045e, /* MS Lifecam */
sound/usb/usbaudio.h+3−0
@@ -170,6 +170,8 @@ extern bool snd_usb_skip_validation; · 169 unmodified lines
170170 * Apply the generic implicit feedback sync mode (same as implicit_fb=1 option)
171171 * QUIRK_FLAG_SKIP_IMPLICIT_FB
172172 * Don't apply implicit feedback sync mode
173+ * QUIRK_FLAG_IFACE_SKIP_CLOSE
174+ * Don't closed interface during setting sample rate
173175 */
174176
175177 #define QUIRK_FLAG_GET_SAMPLE_RATE (1U << 0)
@@ -191,5 +193,6 @@ extern bool snd_usb_skip_validation; · 15 unmodified lines
191193 #define QUIRK_FLAG_SET_IFACE_FIRST (1U << 16)
192194 #define QUIRK_FLAG_GENERIC_IMPLICIT_FB (1U << 17)
193195 #define QUIRK_FLAG_SKIP_IMPLICIT_FB (1U << 18)
196+#define QUIRK_FLAG_IFACE_SKIP_CLOSE (1U << 19)
194197
195198 #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
300300 int err;
301301 int fd;
302302
303+ if (!REQ_ARGS(3))
304+ return -EINVAL;
305+
303306 fd = get_fd(&argc, &argv);
304307 if (fd < 0)
305308 return fd;
tools/include/uapi/linux/in.h+1−0
@@ -20,6 +20,7 @@ · 19 unmodified lines
2020 #define _UAPI_LINUX_IN_H
2121
2222 #include <linux/types.h>
23+#include <linux/stddef.h>
2324 #include <linux/libc-compat.h>
2425 #include <linux/socket.h>
2526
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
4141 'EXCEPTION_NMI': 0,
4242 'EXTERNAL_INTERRUPT': 1,
4343 'TRIPLE_FAULT': 2,
44− 'PENDING_INTERRUPT': 7,
44+ 'INIT_SIGNAL': 3,
45+ 'SIPI_SIGNAL': 4,
46+ 'INTERRUPT_WINDOW': 7,
4547 'NMI_WINDOW': 8,
4648 'TASK_SWITCH': 9,
4749 'CPUID': 10,
4850 'HLT': 12,
51+ 'INVD': 13,
4952 'INVLPG': 14,
5053 'RDPMC': 15,
5154 'RDTSC': 16,
@@ -65,26 +68,48 @@ VMX_EXIT_REASONS = { · 13 unmodified lines
6568 'MSR_READ': 31,
6669 'MSR_WRITE': 32,
6770 'INVALID_STATE': 33,
71+ 'MSR_LOAD_FAIL': 34,
6872 'MWAIT_INSTRUCTION': 36,
73+ 'MONITOR_TRAP_FLAG': 37,
6974 'MONITOR_INSTRUCTION': 39,
7075 'PAUSE_INSTRUCTION': 40,
7176 'MCE_DURING_VMENTRY': 41,
7277 'TPR_BELOW_THRESHOLD': 43,
7378 'APIC_ACCESS': 44,
79+ 'EOI_INDUCED': 45,
80+ 'GDTR_IDTR': 46,
81+ 'LDTR_TR': 47,
7482 'EPT_VIOLATION': 48,
7583 'EPT_MISCONFIG': 49,
84+ 'INVEPT': 50,
85+ 'RDTSCP': 51,
86+ 'PREEMPTION_TIMER': 52,
87+ 'INVVPID': 53,
7688 'WBINVD': 54,
7789 'XSETBV': 55,
7890 'APIC_WRITE': 56,
91+ 'RDRAND': 57,
7992 '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,
80103 }
81104
82105 SVM_EXIT_REASONS = {
83106 'READ_CR0': 0x000,
107+ 'READ_CR2': 0x002,
84108 'READ_CR3': 0x003,
85109 'READ_CR4': 0x004,
86110 'READ_CR8': 0x008,
87111 'WRITE_CR0': 0x010,
112+ 'WRITE_CR2': 0x012,
88113 'WRITE_CR3': 0x013,
89114 'WRITE_CR4': 0x014,
90115 'WRITE_CR8': 0x018,
@@ -105,6 +130,7 @@ SVM_EXIT_REASONS = { · 14 unmodified lines
105130 'WRITE_DR6': 0x036,
106131 'WRITE_DR7': 0x037,
107132 'EXCP_BASE': 0x040,
133+ 'LAST_EXCP': 0x05f,
108134 'INTR': 0x060,
109135 'NMI': 0x061,
110136 'SMI': 0x062,
@@ -151,21 +177,45 @@ SVM_EXIT_REASONS = { · 40 unmodified lines
151177 'MWAIT': 0x08b,
152178 'MWAIT_COND': 0x08c,
153179 '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,
154199 'NPF': 0x400,
200+ 'AVIC_INCOMPLETE_IPI': 0x401,
201+ 'AVIC_UNACCELERATED_ACCESS': 0x402,
202+ 'VMGEXIT': 0x403,
155203 }
156204
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)
158206 AARCH64_EXIT_REASONS = {
159207 'UNKNOWN': 0x00,
160− 'WFI': 0x01,
208+ 'WFx': 0x01,
161209 'CP15_32': 0x03,
162210 'CP15_64': 0x04,
163211 'CP14_MR': 0x05,
164212 'CP14_LS': 0x06,
165213 'FP_ASIMD': 0x07,
166214 'CP10_ID': 0x08,
215+ 'PAC': 0x09,
167216 'CP14_64': 0x0C,
168− 'ILL_ISS': 0x0E,
217+ 'BTI': 0x0D,
218+ 'ILL': 0x0E,
169219 'SVC32': 0x11,
170220 'HVC32': 0x12,
171221 'SMC32': 0x13,
@@ -173,21 +223,26 @@ AARCH64_EXIT_REASONS = { · 1 unmodified line
173223 'HVC64': 0x16,
174224 'SMC64': 0x17,
175225 'SYS64': 0x18,
176− 'IABT': 0x20,
177− 'IABT_HYP': 0x21,
226+ 'SVE': 0x19,
227+ 'ERET': 0x1A,
228+ 'FPAC': 0x1C,
229+ 'SME': 0x1D,
230+ 'IMP_DEF': 0x1F,
231+ 'IABT_LOW': 0x20,
232+ 'IABT_CUR': 0x21,
178233 'PC_ALIGN': 0x22,
179− 'DABT': 0x24,
180− 'DABT_HYP': 0x25,
234+ 'DABT_LOW': 0x24,
235+ 'DABT_CUR': 0x25,
181236 'SP_ALIGN': 0x26,
182237 'FP_EXC32': 0x28,
183238 'FP_EXC64': 0x2C,
184239 'SERROR': 0x2F,
185− 'BREAKPT': 0x30,
186− 'BREAKPT_HYP': 0x31,
187− 'SOFTSTP': 0x32,
188− 'SOFTSTP_HYP': 0x33,
189− 'WATCHPT': 0x34,
190− 'WATCHPT_HYP': 0x35,
240+ 'BREAKPT_LOW': 0x30,
241+ 'BREAKPT_CUR': 0x31,
242+ 'SOFTSTP_LOW': 0x32,
243+ 'SOFTSTP_CUR': 0x33,
244+ 'WATCHPT_LOW': 0x34,
245+ 'WATCHPT_CUR': 0x35,
191246 'BKPT32': 0x38,
192247 'VECTOR32': 0x3A,
193248 'BRK64': 0x3C,
@@ -220,6 +275,19 @@ USERSPACE_EXIT_REASONS = { · 26 unmodified lines
220275 'S390_TSCH': 22,
221276 'EPR': 23,
222277 '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,
223291 }
224292
225293 IOCTL_NUMBERS = {
@@ -1756,7 +1824,7 @@ def assign_globals(): · 1530 unmodified lines
17561824
17571825 debugfs = ''
17581826 for line in open('/proc/mounts'):
1759− if line.split(' ')[0] == 'debugfs':
1827+ if line.split(' ')[2] == 'debugfs':
17601828 debugfs = line.split(' ')[1]
17611829 break
17621830 if debugfs == '':
tools/perf/.gitignore+1−0
@@ -4,6 +4,7 @@ PERF-GUI-VARS · 3 unmodified lines
44 PERF-VERSION-FILE
55 FEATURE-DUMP
66 perf
7+!include/perf/
78 perf-read-vdso32
89 perf-read-vdsox32
910 perf-help
tools/perf/tests/shell/test_brstack.sh+4−1
@@ -13,7 +13,10 @@ fi · 12 unmodified lines
1313
1414 # skip the test if the hardware doesn't support branch stack sampling
1515 # and if the architecture doesn't support filter types: any,save_type,u
16−perf record -b -o- -B --branch-filter any,save_type,u true > /dev/null 2>&1 || exit 2
16+if ! 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
19+fi
1720
1821 TMPDIR=$(mktemp -d /tmp/__perf_test.program.XXXXX)
1922
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
102102 /*
103103 * cannot set it twice, -b + --branch-filter for instance
104104 */
105− if (*mode)
105+ if (*mode) {
106+ pr_err("Error: Can't use --branch-any (-b) with --branch-filter (-j).\n");
106107 return -1;
108+ }
107109
108110 return parse_branch_str(str, mode);
109111 }
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
273273
274274 fputc('\n', os->fh);
275275 if (os->prefix)
276− fprintf(os->fh, "%s%s", os->prefix, config->csv_sep);
276+ fprintf(os->fh, "%s", os->prefix);
277277 aggr_printout(config, os->evsel, os->id, os->nr);
278278 for (i = 0; i < os->nfields; i++)
279279 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
559559 [AGGR_CORE] = 2,
560560 [AGGR_THREAD] = 1,
561561 [AGGR_UNSET] = 0,
562− [AGGR_NODE] = 0,
562+ [AGGR_NODE] = 1,
563563 };
564564
565565 pm = config->metric_only ? print_metric_only_csv : print_metric_csv;
@@ -1124,6 +1124,7 @@ static int aggr_header_lens[] = { · 558 unmodified lines
11241124 [AGGR_SOCKET] = 12,
11251125 [AGGR_NONE] = 6,
11261126 [AGGR_THREAD] = 24,
1127+ [AGGR_NODE] = 6,
11271128 [AGGR_GLOBAL] = 0,
11281129 };
11291130
@@ -1133,6 +1134,7 @@ static const char *aggr_header_csv[] = { · 3 unmodified lines
11331134 [AGGR_SOCKET] = "socket,cpus",
11341135 [AGGR_NONE] = "cpu,",
11351136 [AGGR_THREAD] = "comm-pid,",
1137+ [AGGR_NODE] = "node,",
11361138 [AGGR_GLOBAL] = ""
11371139 };
11381140
tools/testing/radix-tree/.gitignore+1−0
@@ -1,4 +1,5 @@
11 # SPDX-License-Identifier: GPL-2.0-only
2+generated/bit-length.h
23 generated/map-shift.h
34 idr.c
45 idr-test
tools/testing/radix-tree/Makefile+16−3
@@ -18,9 +18,14 @@ endif · 17 unmodified lines
1818 ifeq ($(BUILD), 32)
1919 CFLAGS += -m32
2020 LDFLAGS += -m32
21+LONG_BIT := 32
2122 endif
2223
23−targets: generated/map-shift.h $(TARGETS)
24+ifndef LONG_BIT
25+LONG_BIT := $(shell getconf LONG_BIT)
26+endif
27+
28+targets: generated/map-shift.h generated/bit-length.h $(TARGETS)
2429
2530 main: $(OFILES)
2631
@@ -34,11 +39,11 @@ maple: $(CORE_OFILES) · 7 unmodified lines
3439 multiorder: multiorder.o $(CORE_OFILES)
3540
3641 clean:
37− $(RM) $(TARGETS) *.o radix-tree.c idr.c generated/map-shift.h
42+ $(RM) $(TARGETS) *.o radix-tree.c idr.c generated/map-shift.h generated/bit-length.h
3843
3944 vpath %.c ../../lib
4045
41−$(OFILES): Makefile *.h */*.h generated/map-shift.h \
46+$(OFILES): Makefile *.h */*.h generated/map-shift.h generated/bit-length.h \
4247 ../../include/linux/*.h \
4348 ../../include/asm/*.h \
4449 ../../../include/linux/xarray.h \
@@ -61,3 +66,11 @@ generated/map-shift.h: · 16 unmodified lines
6166 echo "#define XA_CHUNK_SHIFT $(SHIFT)" > \
6267 generated/map-shift.h; \
6368 fi
69+
70+generated/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+
76+FORCE: ;
tools/testing/radix-tree/generated/autoconf.h+1−1
@@ -1,2 +1,2 @@
1+#include "bit-length.h"
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
129129 pthread_mutex_unlock(&cachep->lock);
130130 }
131131
132+void kmem_cache_shrink(struct kmem_cache *cachep)
133+{
134+}
135+
132136 int kmem_cache_alloc_bulk(struct kmem_cache *cachep, gfp_t gfp, size_t size,
133137 void **p)
134138 {
tools/testing/radix-tree/maple.c+35770−0
@@ -2,11 +2,17 @@ · 1 unmodified line
22 /*
33 * maple_tree.c: Userspace shim for maple tree test-suite
44 * 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.
58 */
69
710 #define CONFIG_DEBUG_MAPLE_TREE
811 #define CONFIG_MAPLE_SEARCH
12+#define MAPLE_32BIT (MAPLE_NODE_SLOTS > 31)
913 #include "test.h"
14+#include <stdlib.h>
15+#include <time.h>
1016
1117 #define module_init(x)
1218 #define module_exit(x)
@@ -18,6 +24,35717 @@ · 5 unmodified lines
1824 #undef CONFIG_DEBUG_MAPLE_TREE
1925 #include "../../../lib/test_maple_tree.c"
2026
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+
30+struct 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+
47+struct 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+ */
61+static 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+ */
420+static 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+
430+static 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. */
701+int 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+ */
771+static 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;
816+mas_max:
817+ max = mas->max;
818+offset_found:
819+ prev++;
820+offset_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+ */
843+static 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+ */
878+static inline bool mas_tree_walk(struct ma_state *mas, unsigned long *range_min,
879+ unsigned long *range_max)
880+{
881+ bool ret;
882+
883+retry:
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+
905+not_found:
906+ mas->offset = MAPLE_NODE_SLOTS;
907+ return false;
908+}
909+
910+static 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;
919+retry:
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)
934+static 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. */
1079+static noinline void check_erase2_sets(struct maple_tree *mt)
1080+{
1081+ void *entry;
1082+ unsigned long start = 0;
1083+ unsigned long set[] = {
1084+STORE, 140737488347136, 140737488351231,
1085+STORE, 140721266458624, 140737488351231,
1086+ERASE, 140721266458624, 140737488351231,
1087+STORE, 140721266458624, 140721266462719,
1088+STORE, 94735788949504, 94735789121535,
1089+ERASE, 94735788949504, 94735789121535,
1090+STORE, 94735788949504, 94735788965887,
1091+STORE, 94735788965888, 94735789121535,
1092+ERASE, 94735788965888, 94735789121535,
1093+STORE, 94735788965888, 94735789068287,
1094+STORE, 94735789068288, 94735789109247,
1095+STORE, 94735789109248, 94735789121535,
1096+STORE, 140253902692352, 140253902864383,
1097+ERASE, 140253902692352, 140253902864383,
1098+STORE, 140253902692352, 140253902696447,
1099+STORE, 140253902696448, 140253902864383,
1100+ };
1101+ unsigned long set2[] = {
1102+STORE, 140737488347136, 140737488351231,
1103+STORE, 140735933583360, 140737488351231,
1104+ERASE, 140735933583360, 140737488351231,
1105+STORE, 140735933583360, 140735933587455,
1106+STORE, 94811003260928, 94811003432959,
1107+ERASE, 94811003260928, 94811003432959,
1108+STORE, 94811003260928, 94811003277311,
1109+STORE, 94811003277312, 94811003432959,
1110+ERASE, 94811003277312, 94811003432959,
1111+STORE, 94811003277312, 94811003379711,
1112+STORE, 94811003379712, 94811003420671,
1113+STORE, 94811003420672, 94811003432959,
1114+STORE, 140277094653952, 140277094825983,
1115+ERASE, 140277094653952, 140277094825983,
1116+STORE, 140277094653952, 140277094658047,
1117+STORE, 140277094658048, 140277094825983,
1118+ERASE, 140277094658048, 140277094825983,
1119+STORE, 140277094658048, 140277094780927,
1120+STORE, 140277094780928, 140277094813695,
1121+STORE, 140277094813696, 140277094821887,
1122+STORE, 140277094821888, 140277094825983,
1123+STORE, 140735933906944, 140735933911039,
1124+ };
1125+ unsigned long set3[] = {
1126+STORE, 140737488347136, 140737488351231,
1127+STORE, 140735790264320, 140737488351231,
1128+ERASE, 140735790264320, 140737488351231,
1129+STORE, 140735790264320, 140735790268415,
1130+STORE, 94016597282816, 94016597454847,
1131+ERASE, 94016597282816, 94016597454847,
1132+STORE, 94016597282816, 94016597299199,
1133+STORE, 94016597299200, 94016597454847,
1134+ERASE, 94016597299200, 94016597454847,
1135+STORE, 94016597299200, 94016597401599,
1136+STORE, 94016597401600, 94016597442559,
1137+STORE, 94016597442560, 94016597454847,
1138+STORE, 140496959283200, 140496959455231,
1139+ERASE, 140496959283200, 140496959455231,
1140+STORE, 140496959283200, 140496959287295,
1141+STORE, 140496959287296, 140496959455231,
1142+ERASE, 140496959287296, 140496959455231,
1143+STORE, 140496959287296, 140496959410175,
1144+STORE, 140496959410176, 140496959442943,
1145+STORE, 140496959442944, 140496959451135,
1146+STORE, 140496959451136, 140496959455231,
1147+STORE, 140735791718400, 140735791722495,
1148+STORE, 140735791706112, 140735791718399,
1149+STORE, 47135835713536, 47135835721727,
1150+STORE, 47135835721728, 47135835729919,
1151+STORE, 47135835729920, 47135835893759,
1152+ERASE, 47135835729920, 47135835893759,
1153+STORE, 47135835729920, 47135835742207,
1154+STORE, 47135835742208, 47135835893759,
1155+STORE, 47135835840512, 47135835893759,
1156+STORE, 47135835742208, 47135835840511,
1157+ERASE, 47135835742208, 47135835840511,
1158+STORE, 47135835742208, 47135835840511,
1159+STORE, 47135835885568, 47135835893759,
1160+STORE, 47135835840512, 47135835885567,
1161+ERASE, 47135835840512, 47135835885567,
1162+STORE, 47135835840512, 47135835893759,
1163+ERASE, 47135835840512, 47135835893759,
1164+STORE, 47135835840512, 47135835885567,
1165+STORE, 47135835885568, 47135835893759,
1166+ };
1167+
1168+ unsigned long set4[] = {
1169+STORE, 140737488347136, 140737488351231,
1170+STORE, 140728251703296, 140737488351231,
1171+ERASE, 140728251703296, 140737488351231,
1172+STORE, 140728251703296, 140728251707391,
1173+STORE, 94668429205504, 94668429377535,
1174+ERASE, 94668429205504, 94668429377535,
1175+STORE, 94668429205504, 94668429221887,
1176+STORE, 94668429221888, 94668429377535,
1177+ERASE, 94668429221888, 94668429377535,
1178+STORE, 94668429221888, 94668429324287,
1179+STORE, 94668429324288, 94668429365247,
1180+STORE, 94668429365248, 94668429377535,
1181+STORE, 47646523273216, 47646523445247,
1182+ERASE, 47646523273216, 47646523445247,
1183+STORE, 47646523273216, 47646523277311,
1184+STORE, 47646523277312, 47646523445247,
1185+ERASE, 47646523277312, 47646523445247,
1186+STORE, 47646523277312, 47646523400191,
1187+ };
1188+
1189+ unsigned long set5[] = {
1190+STORE, 140737488347136, 140737488351231,
1191+STORE, 140726874062848, 140737488351231,
1192+ERASE, 140726874062848, 140737488351231,
1193+STORE, 140726874062848, 140726874066943,
1194+STORE, 94248892870656, 94248893042687,
1195+ERASE, 94248892870656, 94248893042687,
1196+STORE, 94248892870656, 94248892887039,
1197+STORE, 94248892887040, 94248893042687,
1198+ERASE, 94248892887040, 94248893042687,
1199+STORE, 94248892887040, 94248892989439,
1200+STORE, 94248892989440, 94248893030399,
1201+STORE, 94248893030400, 94248893042687,
1202+STORE, 47884786266112, 47884786438143,
1203+ERASE, 47884786266112, 47884786438143,
1204+STORE, 47884786266112, 47884786270207,
1205+STORE, 47884786270208, 47884786438143,
1206+ERASE, 47884786270208, 47884786438143,
1207+STORE, 47884786270208, 47884786393087,
1208+STORE, 47884786393088, 47884786425855,
1209+STORE, 47884786425856, 47884786434047,
1210+STORE, 47884786434048, 47884786438143,
1211+STORE, 140726874513408, 140726874517503,
1212+STORE, 140726874501120, 140726874513407,
1213+STORE, 47884786438144, 47884786446335,
1214+STORE, 47884786446336, 47884786454527,
1215+STORE, 47884786454528, 47884786618367,
1216+ERASE, 47884786454528, 47884786618367,
1217+STORE, 47884786454528, 47884786466815,
1218+STORE, 47884786466816, 47884786618367,
1219+STORE, 47884786565120, 47884786618367,
1220+STORE, 47884786466816, 47884786565119,
1221+ERASE, 47884786466816, 47884786565119,
1222+STORE, 47884786466816, 47884786565119,
1223+STORE, 47884786610176, 47884786618367,
1224+STORE, 47884786565120, 47884786610175,
1225+ERASE, 47884786565120, 47884786610175,
1226+STORE, 47884786565120, 47884786618367,
1227+ERASE, 47884786565120, 47884786618367,
1228+STORE, 47884786565120, 47884786610175,
1229+STORE, 47884786610176, 47884786618367,
1230+ERASE, 47884786610176, 47884786618367,
1231+STORE, 47884786610176, 47884786618367,
1232+STORE, 47884786618368, 47884789669887,
1233+STORE, 47884787163136, 47884789669887,
1234+STORE, 47884786618368, 47884787163135,
1235+ERASE, 47884787163136, 47884789669887,
1236+STORE, 47884787163136, 47884789448703,
1237+STORE, 47884789448704, 47884789669887,
1238+STORE, 47884788858880, 47884789448703,
1239+STORE, 47884787163136, 47884788858879,
1240+ERASE, 47884787163136, 47884788858879,
1241+STORE, 47884787163136, 47884788858879,
1242+STORE, 47884789444608, 47884789448703,
1243+STORE, 47884788858880, 47884789444607,
1244+ERASE, 47884788858880, 47884789444607,
1245+STORE, 47884788858880, 47884789444607,
1246+STORE, 47884789653504, 47884789669887,
1247+STORE, 47884789448704, 47884789653503,
1248+ERASE, 47884789448704, 47884789653503,
1249+STORE, 47884789448704, 47884789653503,
1250+ERASE, 47884789653504, 47884789669887,
1251+STORE, 47884789653504, 47884789669887,
1252+STORE, 47884789669888, 47884791508991,
1253+STORE, 47884789809152, 47884791508991,
1254+STORE, 47884789669888, 47884789809151,
1255+ERASE, 47884789809152, 47884791508991,
1256+STORE, 47884789809152, 47884791468031,
1257+STORE, 47884791468032, 47884791508991,
1258+STORE, 47884791152640, 47884791468031,
1259+STORE, 47884789809152, 47884791152639,
1260+ERASE, 47884789809152, 47884791152639,
1261+STORE, 47884789809152, 47884791152639,
1262+STORE, 47884791463936, 47884791468031,
1263+STORE, 47884791152640, 47884791463935,
1264+ERASE, 47884791152640, 47884791463935,
1265+STORE, 47884791152640, 47884791463935,
1266+STORE, 47884791492608, 47884791508991,
1267+STORE, 47884791468032, 47884791492607,
1268+ERASE, 47884791468032, 47884791492607,
1269+STORE, 47884791468032, 47884791492607,
1270+ERASE, 47884791492608, 47884791508991,
1271+STORE, 47884791492608, 47884791508991,
1272+STORE, 47884791508992, 47884791644159,
1273+ERASE, 47884791508992, 47884791644159,
1274+STORE, 47884791508992, 47884791533567,
1275+STORE, 47884791533568, 47884791644159,
1276+STORE, 47884791595008, 47884791644159,
1277+STORE, 47884791533568, 47884791595007,
1278+ERASE, 47884791533568, 47884791595007,
1279+STORE, 47884791533568, 47884791595007,
1280+STORE, 47884791619584, 47884791644159,
1281+STORE, 47884791595008, 47884791619583,
1282+ERASE, 47884791595008, 47884791619583,
1283+STORE, 47884791595008, 47884791644159,
1284+ERASE, 47884791595008, 47884791644159,
1285+STORE, 47884791595008, 47884791619583,
1286+STORE, 47884791619584, 47884791644159,
1287+STORE, 47884791627776, 47884791644159,
1288+STORE, 47884791619584, 47884791627775,
1289+ERASE, 47884791619584, 47884791627775,
1290+STORE, 47884791619584, 47884791627775,
1291+ERASE, 47884791627776, 47884791644159,
1292+STORE, 47884791627776, 47884791644159,
1293+STORE, 47884791644160, 47884791664639,
1294+ERASE, 47884791644160, 47884791664639,
1295+STORE, 47884791644160, 47884791648255,
1296+STORE, 47884791648256, 47884791664639,
1297+STORE, 47884791652352, 47884791664639,
1298+STORE, 47884791648256, 47884791652351,
1299+ERASE, 47884791648256, 47884791652351,
1300+STORE, 47884791648256, 47884791652351,
1301+STORE, 47884791656448, 47884791664639,
1302+STORE, 47884791652352, 47884791656447,
1303+ERASE, 47884791652352, 47884791656447,
1304+STORE, 47884791652352, 47884791664639,
1305+ERASE, 47884791652352, 47884791664639,
1306+STORE, 47884791652352, 47884791656447,
1307+STORE, 47884791656448, 47884791664639,
1308+ERASE, 47884791656448, 47884791664639,
1309+STORE, 47884791656448, 47884791664639,
1310+STORE, 47884791664640, 47884791672831,
1311+ERASE, 47884791468032, 47884791492607,
1312+STORE, 47884791468032, 47884791484415,
1313+STORE, 47884791484416, 47884791492607,
1314+ERASE, 47884791656448, 47884791664639,
1315+STORE, 47884791656448, 47884791660543,
1316+STORE, 47884791660544, 47884791664639,
1317+ERASE, 47884791619584, 47884791627775,
1318+STORE, 47884791619584, 47884791623679,
1319+STORE, 47884791623680, 47884791627775,
1320+ };
1321+
1322+ unsigned long set6[] = {
1323+STORE, 140737488347136, 140737488351231,
1324+STORE, 140722999021568, 140737488351231,
1325+ERASE, 140722999021568, 140737488351231,
1326+STORE, 140722999021568, 140722999025663,
1327+STORE, 94901500268544, 94901500440575,
1328+ERASE, 94901500268544, 94901500440575,
1329+STORE, 94901500268544, 94901500284927,
1330+STORE, 94901500284928, 94901500440575,
1331+ERASE, 94901500284928, 94901500440575,
1332+STORE, 94901500284928, 94901500387327,
1333+STORE, 94901500387328, 94901500428287,
1334+STORE, 94901500428288, 94901500440575,
1335+STORE, 47430426660864, 47430426832895,
1336+ERASE, 47430426660864, 47430426832895,
1337+STORE, 47430426660864, 47430426664959,
1338+STORE, 47430426664960, 47430426832895,
1339+ERASE, 47430426664960, 47430426832895,
1340+STORE, 47430426664960, 47430426787839,
1341+STORE, 47430426787840, 47430426820607,
1342+STORE, 47430426820608, 47430426828799,
1343+STORE, 47430426828800, 47430426832895,
1344+STORE, 140722999115776, 140722999119871,
1345+STORE, 140722999103488, 140722999115775,
1346+STORE, 47430426832896, 47430426841087,
1347+STORE, 47430426841088, 47430426849279,
1348+STORE, 47430426849280, 47430427013119,
1349+ERASE, 47430426849280, 47430427013119,
1350+STORE, 47430426849280, 47430426861567,
1351+STORE, 47430426861568, 47430427013119,
1352+STORE, 47430426959872, 47430427013119,
1353+STORE, 47430426861568, 47430426959871,
1354+ERASE, 47430426861568, 47430426959871,
1355+STORE, 47430426861568, 47430426959871,
1356+STORE, 47430427004928, 47430427013119,
1357+STORE, 47430426959872, 47430427004927,
1358+ERASE, 47430426959872, 47430427004927,
1359+STORE, 47430426959872, 47430427013119,
1360+ERASE, 47430426959872, 47430427013119,
1361+STORE, 47430426959872, 47430427004927,
1362+STORE, 47430427004928, 47430427013119,
1363+ERASE, 47430427004928, 47430427013119,
1364+STORE, 47430427004928, 47430427013119,
1365+STORE, 47430427013120, 47430430064639,
1366+STORE, 47430427557888, 47430430064639,
1367+STORE, 47430427013120, 47430427557887,
1368+ERASE, 47430427557888, 47430430064639,
1369+STORE, 47430427557888, 47430429843455,
1370+STORE, 47430429843456, 47430430064639,
1371+STORE, 47430429253632, 47430429843455,
1372+STORE, 47430427557888, 47430429253631,
1373+ERASE, 47430427557888, 47430429253631,
1374+STORE, 47430427557888, 47430429253631,
1375+STORE, 47430429839360, 47430429843455,
1376+STORE, 47430429253632, 47430429839359,
1377+ERASE, 47430429253632, 47430429839359,
1378+STORE, 47430429253632, 47430429839359,
1379+STORE, 47430430048256, 47430430064639,
1380+STORE, 47430429843456, 47430430048255,
1381+ERASE, 47430429843456, 47430430048255,
1382+STORE, 47430429843456, 47430430048255,
1383+ERASE, 47430430048256, 47430430064639,
1384+STORE, 47430430048256, 47430430064639,
1385+STORE, 47430430064640, 47430431903743,
1386+STORE, 47430430203904, 47430431903743,
1387+STORE, 47430430064640, 47430430203903,
1388+ERASE, 47430430203904, 47430431903743,
1389+STORE, 47430430203904, 47430431862783,
1390+STORE, 47430431862784, 47430431903743,
1391+STORE, 47430431547392, 47430431862783,
1392+STORE, 47430430203904, 47430431547391,
1393+ERASE, 47430430203904, 47430431547391,
1394+STORE, 47430430203904, 47430431547391,
1395+STORE, 47430431858688, 47430431862783,
1396+STORE, 47430431547392, 47430431858687,
1397+ERASE, 47430431547392, 47430431858687,
1398+STORE, 47430431547392, 47430431858687,
1399+STORE, 47430431887360, 47430431903743,
1400+STORE, 47430431862784, 47430431887359,
1401+ERASE, 47430431862784, 47430431887359,
1402+STORE, 47430431862784, 47430431887359,
1403+ERASE, 47430431887360, 47430431903743,
1404+STORE, 47430431887360, 47430431903743,
1405+STORE, 47430431903744, 47430432038911,
1406+ERASE, 47430431903744, 47430432038911,
1407+STORE, 47430431903744, 47430431928319,
1408+STORE, 47430431928320, 47430432038911,
1409+STORE, 47430431989760, 47430432038911,
1410+STORE, 47430431928320, 47430431989759,
1411+ERASE, 47430431928320, 47430431989759,
1412+STORE, 47430431928320, 47430431989759,
1413+STORE, 47430432014336, 47430432038911,
1414+STORE, 47430431989760, 47430432014335,
1415+ERASE, 47430431989760, 47430432014335,
1416+STORE, 47430431989760, 47430432038911,
1417+ERASE, 47430431989760, 47430432038911,
1418+STORE, 47430431989760, 47430432014335,
1419+STORE, 47430432014336, 47430432038911,
1420+STORE, 47430432022528, 47430432038911,
1421+STORE, 47430432014336, 47430432022527,
1422+ERASE, 47430432014336, 47430432022527,
1423+STORE, 47430432014336, 47430432022527,
1424+ERASE, 47430432022528, 47430432038911,
1425+STORE, 47430432022528, 47430432038911,
1426+STORE, 47430432038912, 47430432059391,
1427+ERASE, 47430432038912, 47430432059391,
1428+STORE, 47430432038912, 47430432043007,
1429+STORE, 47430432043008, 47430432059391,
1430+STORE, 47430432047104, 47430432059391,
1431+STORE, 47430432043008, 47430432047103,
1432+ERASE, 47430432043008, 47430432047103,
1433+STORE, 47430432043008, 47430432047103,
1434+STORE, 47430432051200, 47430432059391,
1435+STORE, 47430432047104, 47430432051199,
1436+ERASE, 47430432047104, 47430432051199,
1437+STORE, 47430432047104, 47430432059391,
1438+ERASE, 47430432047104, 47430432059391,
1439+STORE, 47430432047104, 47430432051199,
1440+STORE, 47430432051200, 47430432059391,
1441+ERASE, 47430432051200, 47430432059391,
1442+STORE, 47430432051200, 47430432059391,
1443+STORE, 47430432059392, 47430432067583,
1444+ERASE, 47430431862784, 47430431887359,
1445+STORE, 47430431862784, 47430431879167,
1446+STORE, 47430431879168, 47430431887359,
1447+ERASE, 47430432051200, 47430432059391,
1448+STORE, 47430432051200, 47430432055295,
1449+STORE, 47430432055296, 47430432059391,
1450+ERASE, 47430432014336, 47430432022527,
1451+STORE, 47430432014336, 47430432018431,
1452+STORE, 47430432018432, 47430432022527,
1453+ };
1454+ unsigned long set7[] = {
1455+STORE, 140737488347136, 140737488351231,
1456+STORE, 140729808330752, 140737488351231,
1457+ERASE, 140729808330752, 140737488351231,
1458+STORE, 140729808330752, 140729808334847,
1459+STORE, 94629632020480, 94629632192511,
1460+ERASE, 94629632020480, 94629632192511,
1461+STORE, 94629632020480, 94629632036863,
1462+STORE, 94629632036864, 94629632192511,
1463+ERASE, 94629632036864, 94629632192511,
1464+STORE, 94629632036864, 94629632139263,
1465+STORE, 94629632139264, 94629632180223,
1466+STORE, 94629632180224, 94629632192511,
1467+STORE, 47439981776896, 47439981948927,
1468+ERASE, 47439981776896, 47439981948927,
1469+STORE, 47439981776896, 47439981780991,
1470+STORE, 47439981780992, 47439981948927,
1471+ERASE, 47439981780992, 47439981948927,
1472+STORE, 47439981780992, 47439981903871,
1473+STORE, 47439981903872, 47439981936639,
1474+STORE, 47439981936640, 47439981944831,
1475+STORE, 47439981944832, 47439981948927,
1476+STORE, 140729808474112, 140729808478207,
1477+STORE, 140729808461824, 140729808474111,
1478+STORE, 47439981948928, 47439981957119,
1479+STORE, 47439981957120, 47439981965311,
1480+STORE, 47439981965312, 47439982129151,
1481+ERASE, 47439981965312, 47439982129151,
1482+STORE, 47439981965312, 47439981977599,
1483+STORE, 47439981977600, 47439982129151,
1484+STORE, 47439982075904, 47439982129151,
1485+STORE, 47439981977600, 47439982075903,
1486+ERASE, 47439981977600, 47439982075903,
1487+STORE, 47439981977600, 47439982075903,
1488+STORE, 47439982120960, 47439982129151,
1489+STORE, 47439982075904, 47439982120959,
1490+ERASE, 47439982075904, 47439982120959,
1491+STORE, 47439982075904, 47439982129151,
1492+ERASE, 47439982075904, 47439982129151,
1493+STORE, 47439982075904, 47439982120959,
1494+STORE, 47439982120960, 47439982129151,
1495+ERASE, 47439982120960, 47439982129151,
1496+STORE, 47439982120960, 47439982129151,
1497+STORE, 47439982129152, 47439985180671,
1498+STORE, 47439982673920, 47439985180671,
1499+STORE, 47439982129152, 47439982673919,
1500+ERASE, 47439982673920, 47439985180671,
1501+STORE, 47439982673920, 47439984959487,
1502+STORE, 47439984959488, 47439985180671,
1503+STORE, 47439984369664, 47439984959487,
1504+STORE, 47439982673920, 47439984369663,
1505+ERASE, 47439982673920, 47439984369663,
1506+STORE, 47439982673920, 47439984369663,
1507+STORE, 47439984955392, 47439984959487,
1508+STORE, 47439984369664, 47439984955391,
1509+ERASE, 47439984369664, 47439984955391,
1510+STORE, 47439984369664, 47439984955391,
1511+STORE, 47439985164288, 47439985180671,
1512+STORE, 47439984959488, 47439985164287,
1513+ERASE, 47439984959488, 47439985164287,
1514+STORE, 47439984959488, 47439985164287,
1515+ERASE, 47439985164288, 47439985180671,
1516+STORE, 47439985164288, 47439985180671,
1517+STORE, 47439985180672, 47439987019775,
1518+STORE, 47439985319936, 47439987019775,
1519+STORE, 47439985180672, 47439985319935,
1520+ERASE, 47439985319936, 47439987019775,
1521+STORE, 47439985319936, 47439986978815,
1522+STORE, 47439986978816, 47439987019775,
1523+STORE, 47439986663424, 47439986978815,
1524+STORE, 47439985319936, 47439986663423,
1525+ERASE, 47439985319936, 47439986663423,
1526+STORE, 47439985319936, 47439986663423,
1527+STORE, 47439986974720, 47439986978815,
1528+STORE, 47439986663424, 47439986974719,
1529+ERASE, 47439986663424, 47439986974719,
1530+STORE, 47439986663424, 47439986974719,
1531+STORE, 47439987003392, 47439987019775,
1532+STORE, 47439986978816, 47439987003391,
1533+ERASE, 47439986978816, 47439987003391,
1534+STORE, 47439986978816, 47439987003391,
1535+ERASE, 47439987003392, 47439987019775,
1536+STORE, 47439987003392, 47439987019775,
1537+STORE, 47439987019776, 47439987154943,
1538+ERASE, 47439987019776, 47439987154943,
1539+STORE, 47439987019776, 47439987044351,
1540+STORE, 47439987044352, 47439987154943,
1541+STORE, 47439987105792, 47439987154943,
1542+STORE, 47439987044352, 47439987105791,
1543+ERASE, 47439987044352, 47439987105791,
1544+STORE, 47439987044352, 47439987105791,
1545+STORE, 47439987130368, 47439987154943,
1546+STORE, 47439987105792, 47439987130367,
1547+ERASE, 47439987105792, 47439987130367,
1548+STORE, 47439987105792, 47439987154943,
1549+ERASE, 47439987105792, 47439987154943,
1550+STORE, 47439987105792, 47439987130367,
1551+STORE, 47439987130368, 47439987154943,
1552+STORE, 47439987138560, 47439987154943,
1553+STORE, 47439987130368, 47439987138559,
1554+ERASE, 47439987130368, 47439987138559,
1555+STORE, 47439987130368, 47439987138559,
1556+ERASE, 47439987138560, 47439987154943,
1557+STORE, 47439987138560, 47439987154943,
1558+STORE, 47439987154944, 47439987175423,
1559+ERASE, 47439987154944, 47439987175423,
1560+STORE, 47439987154944, 47439987159039,
1561+STORE, 47439987159040, 47439987175423,
1562+STORE, 47439987163136, 47439987175423,
1563+STORE, 47439987159040, 47439987163135,
1564+ERASE, 47439987159040, 47439987163135,
1565+STORE, 47439987159040, 47439987163135,
1566+STORE, 47439987167232, 47439987175423,
1567+STORE, 47439987163136, 47439987167231,
1568+ERASE, 47439987163136, 47439987167231,
1569+STORE, 47439987163136, 47439987175423,
1570+ERASE, 47439987163136, 47439987175423,
1571+STORE, 47439987163136, 47439987167231,
1572+STORE, 47439987167232, 47439987175423,
1573+ERASE, 47439987167232, 47439987175423,
1574+STORE, 47439987167232, 47439987175423,
1575+STORE, 47439987175424, 47439987183615,
1576+ERASE, 47439986978816, 47439987003391,
1577+STORE, 47439986978816, 47439986995199,
1578+STORE, 47439986995200, 47439987003391,
1579+ERASE, 47439987167232, 47439987175423,
1580+STORE, 47439987167232, 47439987171327,
1581+STORE, 47439987171328, 47439987175423,
1582+ERASE, 47439987130368, 47439987138559,
1583+STORE, 47439987130368, 47439987134463,
1584+STORE, 47439987134464, 47439987138559,
1585+ };
1586+ unsigned long set8[] = {
1587+STORE, 140737488347136, 140737488351231,
1588+STORE, 140722482974720, 140737488351231,
1589+ERASE, 140722482974720, 140737488351231,
1590+STORE, 140722482974720, 140722482978815,
1591+STORE, 94121505034240, 94121505206271,
1592+ERASE, 94121505034240, 94121505206271,
1593+STORE, 94121505034240, 94121505050623,
1594+STORE, 94121505050624, 94121505206271,
1595+ERASE, 94121505050624, 94121505206271,
1596+STORE, 94121505050624, 94121505153023,
1597+STORE, 94121505153024, 94121505193983,
1598+STORE, 94121505193984, 94121505206271,
1599+STORE, 47708483284992, 47708483457023,
1600+ERASE, 47708483284992, 47708483457023,
1601+STORE, 47708483284992, 47708483289087,
1602+STORE, 47708483289088, 47708483457023,
1603+ERASE, 47708483289088, 47708483457023,
1604+STORE, 47708483289088, 47708483411967,
1605+STORE, 47708483411968, 47708483444735,
1606+STORE, 47708483444736, 47708483452927,
1607+STORE, 47708483452928, 47708483457023,
1608+STORE, 140722483142656, 140722483146751,
1609+STORE, 140722483130368, 140722483142655,
1610+STORE, 47708483457024, 47708483465215,
1611+STORE, 47708483465216, 47708483473407,
1612+STORE, 47708483473408, 47708483637247,
1613+ERASE, 47708483473408, 47708483637247,
1614+STORE, 47708483473408, 47708483485695,
1615+STORE, 47708483485696, 47708483637247,
1616+STORE, 47708483584000, 47708483637247,
1617+STORE, 47708483485696, 47708483583999,
1618+ERASE, 47708483485696, 47708483583999,
1619+STORE, 47708483485696, 47708483583999,
1620+STORE, 47708483629056, 47708483637247,
1621+STORE, 47708483584000, 47708483629055,
1622+ERASE, 47708483584000, 47708483629055,
1623+STORE, 47708483584000, 47708483637247,
1624+ERASE, 47708483584000, 47708483637247,
1625+STORE, 47708483584000, 47708483629055,
1626+STORE, 47708483629056, 47708483637247,
1627+ERASE, 47708483629056, 47708483637247,
1628+STORE, 47708483629056, 47708483637247,
1629+STORE, 47708483637248, 47708486688767,
1630+STORE, 47708484182016, 47708486688767,
1631+STORE, 47708483637248, 47708484182015,
1632+ERASE, 47708484182016, 47708486688767,
1633+STORE, 47708484182016, 47708486467583,
1634+STORE, 47708486467584, 47708486688767,
1635+STORE, 47708485877760, 47708486467583,
1636+STORE, 47708484182016, 47708485877759,
1637+ERASE, 47708484182016, 47708485877759,
1638+STORE, 47708484182016, 47708485877759,
1639+STORE, 47708486463488, 47708486467583,
1640+STORE, 47708485877760, 47708486463487,
1641+ERASE, 47708485877760, 47708486463487,
1642+STORE, 47708485877760, 47708486463487,
1643+STORE, 47708486672384, 47708486688767,
1644+STORE, 47708486467584, 47708486672383,
1645+ERASE, 47708486467584, 47708486672383,
1646+STORE, 47708486467584, 47708486672383,
1647+ERASE, 47708486672384, 47708486688767,
1648+STORE, 47708486672384, 47708486688767,
1649+STORE, 47708486688768, 47708488527871,
1650+STORE, 47708486828032, 47708488527871,
1651+STORE, 47708486688768, 47708486828031,
1652+ERASE, 47708486828032, 47708488527871,
1653+STORE, 47708486828032, 47708488486911,
1654+STORE, 47708488486912, 47708488527871,
1655+STORE, 47708488171520, 47708488486911,
1656+STORE, 47708486828032, 47708488171519,
1657+ERASE, 47708486828032, 47708488171519,
1658+STORE, 47708486828032, 47708488171519,
1659+STORE, 47708488482816, 47708488486911,
1660+STORE, 47708488171520, 47708488482815,
1661+ERASE, 47708488171520, 47708488482815,
1662+STORE, 47708488171520, 47708488482815,
1663+STORE, 47708488511488, 47708488527871,
1664+STORE, 47708488486912, 47708488511487,
1665+ERASE, 47708488486912, 47708488511487,
1666+STORE, 47708488486912, 47708488511487,
1667+ERASE, 47708488511488, 47708488527871,
1668+STORE, 47708488511488, 47708488527871,
1669+STORE, 47708488527872, 47708488663039,
1670+ERASE, 47708488527872, 47708488663039,
1671+STORE, 47708488527872, 47708488552447,
1672+STORE, 47708488552448, 47708488663039,
1673+STORE, 47708488613888, 47708488663039,
1674+STORE, 47708488552448, 47708488613887,
1675+ERASE, 47708488552448, 47708488613887,
1676+STORE, 47708488552448, 47708488613887,
1677+STORE, 47708488638464, 47708488663039,
1678+STORE, 47708488613888, 47708488638463,
1679+ERASE, 47708488613888, 47708488638463,
1680+STORE, 47708488613888, 47708488663039,
1681+ERASE, 47708488613888, 47708488663039,
1682+STORE, 47708488613888, 47708488638463,
1683+STORE, 47708488638464, 47708488663039,
1684+STORE, 47708488646656, 47708488663039,
1685+STORE, 47708488638464, 47708488646655,
1686+ERASE, 47708488638464, 47708488646655,
1687+STORE, 47708488638464, 47708488646655,
1688+ERASE, 47708488646656, 47708488663039,
1689+STORE, 47708488646656, 47708488663039,
1690+STORE, 47708488663040, 47708488683519,
1691+ERASE, 47708488663040, 47708488683519,
1692+STORE, 47708488663040, 47708488667135,
1693+STORE, 47708488667136, 47708488683519,
1694+STORE, 47708488671232, 47708488683519,
1695+STORE, 47708488667136, 47708488671231,
1696+ERASE, 47708488667136, 47708488671231,
1697+STORE, 47708488667136, 47708488671231,
1698+STORE, 47708488675328, 47708488683519,
1699+STORE, 47708488671232, 47708488675327,
1700+ERASE, 47708488671232, 47708488675327,
1701+STORE, 47708488671232, 47708488683519,
1702+ERASE, 47708488671232, 47708488683519,
1703+STORE, 47708488671232, 47708488675327,
1704+STORE, 47708488675328, 47708488683519,
1705+ERASE, 47708488675328, 47708488683519,
1706+STORE, 47708488675328, 47708488683519,
1707+STORE, 47708488683520, 47708488691711,
1708+ERASE, 47708488486912, 47708488511487,
1709+STORE, 47708488486912, 47708488503295,
1710+STORE, 47708488503296, 47708488511487,
1711+ERASE, 47708488675328, 47708488683519,
1712+STORE, 47708488675328, 47708488679423,
1713+STORE, 47708488679424, 47708488683519,
1714+ERASE, 47708488638464, 47708488646655,
1715+STORE, 47708488638464, 47708488642559,
1716+STORE, 47708488642560, 47708488646655,
1717+ };
1718+
1719+ unsigned long set9[] = {
1720+STORE, 140737488347136, 140737488351231,
1721+STORE, 140736427839488, 140737488351231,
1722+ERASE, 140736427839488, 140736427839488,
1723+STORE, 140736427839488, 140736427843583,
1724+STORE, 94071213395968, 94071213567999,
1725+ERASE, 94071213395968, 94071213395968,
1726+STORE, 94071213395968, 94071213412351,
1727+STORE, 94071213412352, 94071213567999,
1728+ERASE, 94071213412352, 94071213412352,
1729+STORE, 94071213412352, 94071213514751,
1730+STORE, 94071213514752, 94071213555711,
1731+STORE, 94071213555712, 94071213567999,
1732+STORE, 139968410644480, 139968410816511,
1733+ERASE, 139968410644480, 139968410644480,
1734+STORE, 139968410644480, 139968410648575,
1735+STORE, 139968410648576, 139968410816511,
1736+ERASE, 139968410648576, 139968410648576,
1737+STORE, 139968410648576, 139968410771455,
1738+STORE, 139968410771456, 139968410804223,
1739+STORE, 139968410804224, 139968410812415,
1740+STORE, 139968410812416, 139968410816511,
1741+STORE, 140736429277184, 140736429281279,
1742+STORE, 140736429264896, 140736429277183,
1743+STORE, 47664384352256, 47664384360447,
1744+STORE, 47664384360448, 47664384368639,
1745+STORE, 47664384368640, 47664384532479,
1746+ERASE, 47664384368640, 47664384368640,
1747+STORE, 47664384368640, 47664384380927,
1748+STORE, 47664384380928, 47664384532479,
1749+STORE, 47664384479232, 47664384532479,
1750+STORE, 47664384380928, 47664384479231,
1751+ERASE, 47664384380928, 47664384380928,
1752+STORE, 47664384380928, 47664384479231,
1753+STORE, 47664384524288, 47664384532479,
1754+STORE, 47664384479232, 47664384524287,
1755+ERASE, 47664384479232, 47664384479232,
1756+STORE, 47664384479232, 47664384532479,
1757+ERASE, 47664384479232, 47664384479232,
1758+STORE, 47664384479232, 47664384524287,
1759+STORE, 47664384524288, 47664384532479,
1760+ERASE, 47664384524288, 47664384524288,
1761+STORE, 47664384524288, 47664384532479,
1762+STORE, 47664384532480, 47664387583999,
1763+STORE, 47664385077248, 47664387583999,
1764+STORE, 47664384532480, 47664385077247,
1765+ERASE, 47664385077248, 47664385077248,
1766+STORE, 47664385077248, 47664387362815,
1767+STORE, 47664387362816, 47664387583999,
1768+STORE, 47664386772992, 47664387362815,
1769+STORE, 47664385077248, 47664386772991,
1770+ERASE, 47664385077248, 47664385077248,
1771+STORE, 47664385077248, 47664386772991,
1772+STORE, 47664387358720, 47664387362815,
1773+STORE, 47664386772992, 47664387358719,
1774+ERASE, 47664386772992, 47664386772992,
1775+STORE, 47664386772992, 47664387358719,
1776+STORE, 47664387567616, 47664387583999,
1777+STORE, 47664387362816, 47664387567615,
1778+ERASE, 47664387362816, 47664387362816,
1779+STORE, 47664387362816, 47664387567615,
1780+ERASE, 47664387567616, 47664387567616,
1781+STORE, 47664387567616, 47664387583999,
1782+STORE, 47664387584000, 47664389423103,
1783+STORE, 47664387723264, 47664389423103,
1784+STORE, 47664387584000, 47664387723263,
1785+ERASE, 47664387723264, 47664387723264,
1786+STORE, 47664387723264, 47664389382143,
1787+STORE, 47664389382144, 47664389423103,
1788+STORE, 47664389066752, 47664389382143,
1789+STORE, 47664387723264, 47664389066751,
1790+ERASE, 47664387723264, 47664387723264,
1791+STORE, 47664387723264, 47664389066751,
1792+STORE, 47664389378048, 47664389382143,
1793+STORE, 47664389066752, 47664389378047,
1794+ERASE, 47664389066752, 47664389066752,
1795+STORE, 47664389066752, 47664389378047,
1796+STORE, 47664389406720, 47664389423103,
1797+STORE, 47664389382144, 47664389406719,
1798+ERASE, 47664389382144, 47664389382144,
1799+STORE, 47664389382144, 47664389406719,
1800+ERASE, 47664389406720, 47664389406720,
1801+STORE, 47664389406720, 47664389423103,
1802+STORE, 47664389423104, 47664389558271,
1803+ERASE, 47664389423104, 47664389423104,
1804+STORE, 47664389423104, 47664389447679,
1805+STORE, 47664389447680, 47664389558271,
1806+STORE, 47664389509120, 47664389558271,
1807+STORE, 47664389447680, 47664389509119,
1808+ERASE, 47664389447680, 47664389447680,
1809+STORE, 47664389447680, 47664389509119,
1810+STORE, 47664389533696, 47664389558271,
1811+STORE, 47664389509120, 47664389533695,
1812+ERASE, 47664389509120, 47664389509120,
1813+STORE, 47664389509120, 47664389558271,
1814+ERASE, 47664389509120, 47664389509120,
1815+STORE, 47664389509120, 47664389533695,
1816+STORE, 47664389533696, 47664389558271,
1817+STORE, 47664389541888, 47664389558271,
1818+STORE, 47664389533696, 47664389541887,
1819+ERASE, 47664389533696, 47664389533696,
1820+STORE, 47664389533696, 47664389541887,
1821+ERASE, 47664389541888, 47664389541888,
1822+STORE, 47664389541888, 47664389558271,
1823+STORE, 47664389558272, 47664389578751,
1824+ERASE, 47664389558272, 47664389558272,
1825+STORE, 47664389558272, 47664389562367,
1826+STORE, 47664389562368, 47664389578751,
1827+STORE, 47664389566464, 47664389578751,
1828+STORE, 47664389562368, 47664389566463,
1829+ERASE, 47664389562368, 47664389562368,
1830+STORE, 47664389562368, 47664389566463,
1831+STORE, 47664389570560, 47664389578751,
1832+STORE, 47664389566464, 47664389570559,
1833+ERASE, 47664389566464, 47664389566464,
1834+STORE, 47664389566464, 47664389578751,
1835+ERASE, 47664389566464, 47664389566464,
1836+STORE, 47664389566464, 47664389570559,
1837+STORE, 47664389570560, 47664389578751,
1838+ERASE, 47664389570560, 47664389570560,
1839+STORE, 47664389570560, 47664389578751,
1840+STORE, 47664389578752, 47664389586943,
1841+ERASE, 47664389382144, 47664389382144,
1842+STORE, 47664389382144, 47664389398527,
1843+STORE, 47664389398528, 47664389406719,
1844+ERASE, 47664389570560, 47664389570560,
1845+STORE, 47664389570560, 47664389574655,
1846+STORE, 47664389574656, 47664389578751,
1847+ERASE, 47664389533696, 47664389533696,
1848+STORE, 47664389533696, 47664389537791,
1849+STORE, 47664389537792, 47664389541887,
1850+ERASE, 47664387362816, 47664387362816,
1851+STORE, 47664387362816, 47664387559423,
1852+STORE, 47664387559424, 47664387567615,
1853+ERASE, 47664384524288, 47664384524288,
1854+STORE, 47664384524288, 47664384528383,
1855+STORE, 47664384528384, 47664384532479,
1856+ERASE, 94071213555712, 94071213555712,
1857+STORE, 94071213555712, 94071213563903,
1858+STORE, 94071213563904, 94071213567999,
1859+ERASE, 139968410804224, 139968410804224,
1860+STORE, 139968410804224, 139968410808319,
1861+STORE, 139968410808320, 139968410812415,
1862+ERASE, 47664384352256, 47664384352256,
1863+STORE, 94071244402688, 94071244537855,
1864+STORE, 140737488347136, 140737488351231,
1865+STORE, 140728271503360, 140737488351231,
1866+ERASE, 140728271503360, 140728271503360,
1867+STORE, 140728271503360, 140728271507455,
1868+STORE, 94410361982976, 94410362155007,
1869+ERASE, 94410361982976, 94410361982976,
1870+STORE, 94410361982976, 94410361999359,
1871+STORE, 94410361999360, 94410362155007,
1872+ERASE, 94410361999360, 94410361999360,
1873+STORE, 94410361999360, 94410362101759,
1874+STORE, 94410362101760, 94410362142719,
1875+STORE, 94410362142720, 94410362155007,
1876+STORE, 140351953997824, 140351954169855,
1877+ERASE, 140351953997824, 140351953997824,
1878+STORE, 140351953997824, 140351954001919,
1879+STORE, 140351954001920, 140351954169855,
1880+ERASE, 140351954001920, 140351954001920,
1881+STORE, 140351954001920, 140351954124799,
1882+STORE, 140351954124800, 140351954157567,
1883+STORE, 140351954157568, 140351954165759,
1884+STORE, 140351954165760, 140351954169855,
1885+STORE, 140728272429056, 140728272433151,
1886+STORE, 140728272416768, 140728272429055,
1887+STORE, 47280840998912, 47280841007103,
1888+STORE, 47280841007104, 47280841015295,
1889+STORE, 47280841015296, 47280841179135,
1890+ERASE, 47280841015296, 47280841015296,
1891+STORE, 47280841015296, 47280841027583,
1892+STORE, 47280841027584, 47280841179135,
1893+STORE, 47280841125888, 47280841179135,
1894+STORE, 47280841027584, 47280841125887,
1895+ERASE, 47280841027584, 47280841027584,
1896+STORE, 47280841027584, 47280841125887,
1897+STORE, 47280841170944, 47280841179135,
1898+STORE, 47280841125888, 47280841170943,
1899+ERASE, 47280841125888, 47280841125888,
1900+STORE, 47280841125888, 47280841179135,
1901+ERASE, 47280841125888, 47280841125888,
1902+STORE, 47280841125888, 47280841170943,
1903+STORE, 47280841170944, 47280841179135,
1904+ERASE, 47280841170944, 47280841170944,
1905+STORE, 47280841170944, 47280841179135,
1906+STORE, 47280841179136, 47280844230655,
1907+STORE, 47280841723904, 47280844230655,
1908+STORE, 47280841179136, 47280841723903,
1909+ERASE, 47280841723904, 47280841723904,
1910+STORE, 47280841723904, 47280844009471,
1911+STORE, 47280844009472, 47280844230655,
1912+STORE, 47280843419648, 47280844009471,
1913+STORE, 47280841723904, 47280843419647,
1914+ERASE, 47280841723904, 47280841723904,
1915+STORE, 47280841723904, 47280843419647,
1916+STORE, 47280844005376, 47280844009471,
1917+STORE, 47280843419648, 47280844005375,
1918+ERASE, 47280843419648, 47280843419648,
1919+STORE, 47280843419648, 47280844005375,
1920+STORE, 47280844214272, 47280844230655,
1921+STORE, 47280844009472, 47280844214271,
1922+ERASE, 47280844009472, 47280844009472,
1923+STORE, 47280844009472, 47280844214271,
1924+ERASE, 47280844214272, 47280844214272,
1925+STORE, 47280844214272, 47280844230655,
1926+STORE, 47280844230656, 47280846069759,
1927+STORE, 47280844369920, 47280846069759,
1928+STORE, 47280844230656, 47280844369919,
1929+ERASE, 47280844369920, 47280844369920,
1930+STORE, 47280844369920, 47280846028799,
1931+STORE, 47280846028800, 47280846069759,
1932+STORE, 47280845713408, 47280846028799,
1933+STORE, 47280844369920, 47280845713407,
1934+ERASE, 47280844369920, 47280844369920,
1935+STORE, 47280844369920, 47280845713407,
1936+STORE, 47280846024704, 47280846028799,
1937+STORE, 47280845713408, 47280846024703,
1938+ERASE, 47280845713408, 47280845713408,
1939+STORE, 47280845713408, 47280846024703,
1940+STORE, 47280846053376, 47280846069759,
1941+STORE, 47280846028800, 47280846053375,
1942+ERASE, 47280846028800, 47280846028800,
1943+STORE, 47280846028800, 47280846053375,
1944+ERASE, 47280846053376, 47280846053376,
1945+STORE, 47280846053376, 47280846069759,
1946+STORE, 47280846069760, 47280846204927,
1947+ERASE, 47280846069760, 47280846069760,
1948+STORE, 47280846069760, 47280846094335,
1949+STORE, 47280846094336, 47280846204927,
1950+STORE, 47280846155776, 47280846204927,
1951+STORE, 47280846094336, 47280846155775,
1952+ERASE, 47280846094336, 47280846094336,
1953+STORE, 47280846094336, 47280846155775,
1954+STORE, 47280846180352, 47280846204927,
1955+STORE, 47280846155776, 47280846180351,
1956+ERASE, 47280846155776, 47280846155776,
1957+STORE, 47280846155776, 47280846204927,
1958+ERASE, 47280846155776, 47280846155776,
1959+STORE, 47280846155776, 47280846180351,
1960+STORE, 47280846180352, 47280846204927,
1961+STORE, 47280846188544, 47280846204927,
1962+STORE, 47280846180352, 47280846188543,
1963+ERASE, 47280846180352, 47280846180352,
1964+STORE, 47280846180352, 47280846188543,
1965+ERASE, 47280846188544, 47280846188544,
1966+STORE, 47280846188544, 47280846204927,
1967+STORE, 47280846204928, 47280846225407,
1968+ERASE, 47280846204928, 47280846204928,
1969+STORE, 47280846204928, 47280846209023,
1970+STORE, 47280846209024, 47280846225407,
1971+STORE, 47280846213120, 47280846225407,
1972+STORE, 47280846209024, 47280846213119,
1973+ERASE, 47280846209024, 47280846209024,
1974+STORE, 47280846209024, 47280846213119,
1975+STORE, 47280846217216, 47280846225407,
1976+STORE, 47280846213120, 47280846217215,
1977+ERASE, 47280846213120, 47280846213120,
1978+STORE, 47280846213120, 47280846225407,
1979+ERASE, 47280846213120, 47280846213120,
1980+STORE, 47280846213120, 47280846217215,
1981+STORE, 47280846217216, 47280846225407,
1982+ERASE, 47280846217216, 47280846217216,
1983+STORE, 47280846217216, 47280846225407,
1984+STORE, 47280846225408, 47280846233599,
1985+ERASE, 47280846028800, 47280846028800,
1986+STORE, 47280846028800, 47280846045183,
1987+STORE, 47280846045184, 47280846053375,
1988+ERASE, 47280846217216, 47280846217216,
1989+STORE, 47280846217216, 47280846221311,
1990+STORE, 47280846221312, 47280846225407,
1991+ERASE, 47280846180352, 47280846180352,
1992+STORE, 47280846180352, 47280846184447,
1993+STORE, 47280846184448, 47280846188543,
1994+ERASE, 47280844009472, 47280844009472,
1995+STORE, 47280844009472, 47280844206079,
1996+STORE, 47280844206080, 47280844214271,
1997+ERASE, 47280841170944, 47280841170944,
1998+STORE, 47280841170944, 47280841175039,
1999+STORE, 47280841175040, 47280841179135,
2000+ERASE, 94410362142720, 94410362142720,
2001+STORE, 94410362142720, 94410362150911,
2002+STORE, 94410362150912, 94410362155007,
2003+ERASE, 140351954157568, 140351954157568,
2004+STORE, 140351954157568, 140351954161663,
2005+STORE, 140351954161664, 140351954165759,
2006+ERASE, 47280840998912, 47280840998912,
2007+STORE, 94410379456512, 94410379591679,
2008+STORE, 140737488347136, 140737488351231,
2009+STORE, 140732946362368, 140737488351231,
2010+ERASE, 140732946362368, 140732946362368,
2011+STORE, 140732946362368, 140732946366463,
2012+STORE, 94352937934848, 94352938106879,
2013+ERASE, 94352937934848, 94352937934848,
2014+STORE, 94352937934848, 94352937951231,
2015+STORE, 94352937951232, 94352938106879,
2016+ERASE, 94352937951232, 94352937951232,
2017+STORE, 94352937951232, 94352938053631,
2018+STORE, 94352938053632, 94352938094591,
2019+STORE, 94352938094592, 94352938106879,
2020+STORE, 140595518742528, 140595518914559,
2021+ERASE, 140595518742528, 140595518742528,
2022+STORE, 140595518742528, 140595518746623,
2023+STORE, 140595518746624, 140595518914559,
2024+ERASE, 140595518746624, 140595518746624,
2025+STORE, 140595518746624, 140595518869503,
2026+STORE, 140595518869504, 140595518902271,
2027+STORE, 140595518902272, 140595518910463,
2028+STORE, 140595518910464, 140595518914559,
2029+STORE, 140732947468288, 140732947472383,
2030+STORE, 140732947456000, 140732947468287,
2031+STORE, 47037276254208, 47037276262399,
2032+STORE, 47037276262400, 47037276270591,
2033+STORE, 47037276270592, 47037276434431,
2034+ERASE, 47037276270592, 47037276270592,
2035+STORE, 47037276270592, 47037276282879,
2036+STORE, 47037276282880, 47037276434431,
2037+STORE, 47037276381184, 47037276434431,
2038+STORE, 47037276282880, 47037276381183,
2039+ERASE, 47037276282880, 47037276282880,
2040+STORE, 47037276282880, 47037276381183,
2041+STORE, 47037276426240, 47037276434431,
2042+STORE, 47037276381184, 47037276426239,
2043+ERASE, 47037276381184, 47037276381184,
2044+STORE, 47037276381184, 47037276434431,
2045+ERASE, 47037276381184, 47037276381184,
2046+STORE, 47037276381184, 47037276426239,
2047+STORE, 47037276426240, 47037276434431,
2048+ERASE, 47037276426240, 47037276426240,
2049+STORE, 47037276426240, 47037276434431,
2050+STORE, 47037276434432, 47037279485951,
2051+STORE, 47037276979200, 47037279485951,
2052+STORE, 47037276434432, 47037276979199,
2053+ERASE, 47037276979200, 47037276979200,
2054+STORE, 47037276979200, 47037279264767,
2055+STORE, 47037279264768, 47037279485951,
2056+STORE, 47037278674944, 47037279264767,
2057+STORE, 47037276979200, 47037278674943,
2058+ERASE, 47037276979200, 47037276979200,
2059+STORE, 47037276979200, 47037278674943,
2060+STORE, 47037279260672, 47037279264767,
2061+STORE, 47037278674944, 47037279260671,
2062+ERASE, 47037278674944, 47037278674944,
2063+STORE, 47037278674944, 47037279260671,
2064+STORE, 47037279469568, 47037279485951,
2065+STORE, 47037279264768, 47037279469567,
2066+ERASE, 47037279264768, 47037279264768,
2067+STORE, 47037279264768, 47037279469567,
2068+ERASE, 47037279469568, 47037279469568,
2069+STORE, 47037279469568, 47037279485951,
2070+STORE, 47037279485952, 47037281325055,
2071+STORE, 47037279625216, 47037281325055,
2072+STORE, 47037279485952, 47037279625215,
2073+ERASE, 47037279625216, 47037279625216,
2074+STORE, 47037279625216, 47037281284095,
2075+STORE, 47037281284096, 47037281325055,
2076+STORE, 47037280968704, 47037281284095,
2077+STORE, 47037279625216, 47037280968703,
2078+ERASE, 47037279625216, 47037279625216,
2079+STORE, 47037279625216, 47037280968703,
2080+STORE, 47037281280000, 47037281284095,
2081+STORE, 47037280968704, 47037281279999,
2082+ERASE, 47037280968704, 47037280968704,
2083+STORE, 47037280968704, 47037281279999,
2084+STORE, 47037281308672, 47037281325055,
2085+STORE, 47037281284096, 47037281308671,
2086+ERASE, 47037281284096, 47037281284096,
2087+STORE, 47037281284096, 47037281308671,
2088+ERASE, 47037281308672, 47037281308672,
2089+STORE, 47037281308672, 47037281325055,
2090+STORE, 47037281325056, 47037281460223,
2091+ERASE, 47037281325056, 47037281325056,
2092+STORE, 47037281325056, 47037281349631,
2093+STORE, 47037281349632, 47037281460223,
2094+STORE, 47037281411072, 47037281460223,
2095+STORE, 47037281349632, 47037281411071,
2096+ERASE, 47037281349632, 47037281349632,
2097+STORE, 47037281349632, 47037281411071,
2098+STORE, 47037281435648, 47037281460223,
2099+STORE, 47037281411072, 47037281435647,
2100+ERASE, 47037281411072, 47037281411072,
2101+STORE, 47037281411072, 47037281460223,
2102+ERASE, 47037281411072, 47037281411072,
2103+STORE, 47037281411072, 47037281435647,
2104+STORE, 47037281435648, 47037281460223,
2105+STORE, 47037281443840, 47037281460223,
2106+STORE, 47037281435648, 47037281443839,
2107+ERASE, 47037281435648, 47037281435648,
2108+STORE, 47037281435648, 47037281443839,
2109+ERASE, 47037281443840, 47037281443840,
2110+STORE, 47037281443840, 47037281460223,
2111+STORE, 47037281460224, 47037281480703,
2112+ERASE, 47037281460224, 47037281460224,
2113+STORE, 47037281460224, 47037281464319,
2114+STORE, 47037281464320, 47037281480703,
2115+STORE, 47037281468416, 47037281480703,
2116+STORE, 47037281464320, 47037281468415,
2117+ERASE, 47037281464320, 47037281464320,
2118+STORE, 47037281464320, 47037281468415,
2119+STORE, 47037281472512, 47037281480703,
2120+STORE, 47037281468416, 47037281472511,
2121+ERASE, 47037281468416, 47037281468416,
2122+STORE, 47037281468416, 47037281480703,
2123+ERASE, 47037281468416, 47037281468416,
2124+STORE, 47037281468416, 47037281472511,
2125+STORE, 47037281472512, 47037281480703,
2126+ERASE, 47037281472512, 47037281472512,
2127+STORE, 47037281472512, 47037281480703,
2128+STORE, 47037281480704, 47037281488895,
2129+ERASE, 47037281284096, 47037281284096,
2130+STORE, 47037281284096, 47037281300479,
2131+STORE, 47037281300480, 47037281308671,
2132+ERASE, 47037281472512, 47037281472512,
2133+STORE, 47037281472512, 47037281476607,
2134+STORE, 47037281476608, 47037281480703,
2135+ERASE, 47037281435648, 47037281435648,
2136+STORE, 47037281435648, 47037281439743,
2137+STORE, 47037281439744, 47037281443839,
2138+ERASE, 47037279264768, 47037279264768,
2139+STORE, 47037279264768, 47037279461375,
2140+STORE, 47037279461376, 47037279469567,
2141+ERASE, 47037276426240, 47037276426240,
2142+STORE, 47037276426240, 47037276430335,
2143+STORE, 47037276430336, 47037276434431,
2144+ERASE, 94352938094592, 94352938094592,
2145+STORE, 94352938094592, 94352938102783,
2146+STORE, 94352938102784, 94352938106879,
2147+ERASE, 140595518902272, 140595518902272,
2148+STORE, 140595518902272, 140595518906367,
2149+STORE, 140595518906368, 140595518910463,
2150+ERASE, 47037276254208, 47037276254208,
2151+STORE, 94352938438656, 94352938573823,
2152+STORE, 140737488347136, 140737488351231,
2153+STORE, 140733506027520, 140737488351231,
2154+ERASE, 140733506027520, 140733506027520,
2155+STORE, 140733506027520, 140733506031615,
2156+STORE, 94150123073536, 94150123245567,
2157+ERASE, 94150123073536, 94150123073536,
2158+STORE, 94150123073536, 94150123089919,
2159+STORE, 94150123089920, 94150123245567,
2160+ERASE, 94150123089920, 94150123089920,
2161+STORE, 94150123089920, 94150123192319,
2162+STORE, 94150123192320, 94150123233279,
2163+STORE, 94150123233280, 94150123245567,
2164+STORE, 140081290375168, 140081290547199,
2165+ERASE, 140081290375168, 140081290375168,
2166+STORE, 140081290375168, 140081290379263,
2167+STORE, 140081290379264, 140081290547199,
2168+ERASE, 140081290379264, 140081290379264,
2169+STORE, 140081290379264, 140081290502143,
2170+STORE, 140081290502144, 140081290534911,
2171+STORE, 140081290534912, 140081290543103,
2172+STORE, 140081290543104, 140081290547199,
2173+STORE, 140733506707456, 140733506711551,
2174+STORE, 140733506695168, 140733506707455,
2175+STORE, 47551504621568, 47551504629759,
2176+STORE, 47551504629760, 47551504637951,
2177+STORE, 47551504637952, 47551504801791,
2178+ERASE, 47551504637952, 47551504637952,
2179+STORE, 47551504637952, 47551504650239,
2180+STORE, 47551504650240, 47551504801791,
2181+STORE, 47551504748544, 47551504801791,
2182+STORE, 47551504650240, 47551504748543,
2183+ERASE, 47551504650240, 47551504650240,
2184+STORE, 47551504650240, 47551504748543,
2185+STORE, 47551504793600, 47551504801791,
2186+STORE, 47551504748544, 47551504793599,
2187+ERASE, 47551504748544, 47551504748544,
2188+STORE, 47551504748544, 47551504801791,
2189+ERASE, 47551504748544, 47551504748544,
2190+STORE, 47551504748544, 47551504793599,
2191+STORE, 47551504793600, 47551504801791,
2192+ERASE, 47551504793600, 47551504793600,
2193+STORE, 47551504793600, 47551504801791,
2194+STORE, 47551504801792, 47551507853311,
2195+STORE, 47551505346560, 47551507853311,
2196+STORE, 47551504801792, 47551505346559,
2197+ERASE, 47551505346560, 47551505346560,
2198+STORE, 47551505346560, 47551507632127,
2199+STORE, 47551507632128, 47551507853311,
2200+STORE, 47551507042304, 47551507632127,
2201+STORE, 47551505346560, 47551507042303,
2202+ERASE, 47551505346560, 47551505346560,
2203+STORE, 47551505346560, 47551507042303,
2204+STORE, 47551507628032, 47551507632127,
2205+STORE, 47551507042304, 47551507628031,
2206+ERASE, 47551507042304, 47551507042304,
2207+STORE, 47551507042304, 47551507628031,
2208+STORE, 47551507836928, 47551507853311,
2209+STORE, 47551507632128, 47551507836927,
2210+ERASE, 47551507632128, 47551507632128,
2211+STORE, 47551507632128, 47551507836927,
2212+ERASE, 47551507836928, 47551507836928,
2213+STORE, 47551507836928, 47551507853311,
2214+STORE, 47551507853312, 47551509692415,
2215+STORE, 47551507992576, 47551509692415,
2216+STORE, 47551507853312, 47551507992575,
2217+ERASE, 47551507992576, 47551507992576,
2218+STORE, 47551507992576, 47551509651455,
2219+STORE, 47551509651456, 47551509692415,
2220+STORE, 47551509336064, 47551509651455,
2221+STORE, 47551507992576, 47551509336063,
2222+ERASE, 47551507992576, 47551507992576,
2223+STORE, 47551507992576, 47551509336063,
2224+STORE, 47551509647360, 47551509651455,
2225+STORE, 47551509336064, 47551509647359,
2226+ERASE, 47551509336064, 47551509336064,
2227+STORE, 47551509336064, 47551509647359,
2228+STORE, 47551509676032, 47551509692415,
2229+STORE, 47551509651456, 47551509676031,
2230+ERASE, 47551509651456, 47551509651456,
2231+STORE, 47551509651456, 47551509676031,
2232+ERASE, 47551509676032, 47551509676032,
2233+STORE, 47551509676032, 47551509692415,
2234+STORE, 47551509692416, 47551509827583,
2235+ERASE, 47551509692416, 47551509692416,
2236+STORE, 47551509692416, 47551509716991,
2237+STORE, 47551509716992, 47551509827583,
2238+STORE, 47551509778432, 47551509827583,
2239+STORE, 47551509716992, 47551509778431,
2240+ERASE, 47551509716992, 47551509716992,
2241+STORE, 47551509716992, 47551509778431,
2242+STORE, 47551509803008, 47551509827583,
2243+STORE, 47551509778432, 47551509803007,
2244+ERASE, 47551509778432, 47551509778432,
2245+STORE, 47551509778432, 47551509827583,
2246+ERASE, 47551509778432, 47551509778432,
2247+STORE, 47551509778432, 47551509803007,
2248+STORE, 47551509803008, 47551509827583,
2249+STORE, 47551509811200, 47551509827583,
2250+STORE, 47551509803008, 47551509811199,
2251+ERASE, 47551509803008, 47551509803008,
2252+STORE, 47551509803008, 47551509811199,
2253+ERASE, 47551509811200, 47551509811200,
2254+STORE, 47551509811200, 47551509827583,
2255+STORE, 47551509827584, 47551509848063,
2256+ERASE, 47551509827584, 47551509827584,
2257+STORE, 47551509827584, 47551509831679,
2258+STORE, 47551509831680, 47551509848063,
2259+STORE, 47551509835776, 47551509848063,
2260+STORE, 47551509831680, 47551509835775,
2261+ERASE, 47551509831680, 47551509831680,
2262+STORE, 47551509831680, 47551509835775,
2263+STORE, 47551509839872, 47551509848063,
2264+STORE, 47551509835776, 47551509839871,
2265+ERASE, 47551509835776, 47551509835776,
2266+STORE, 47551509835776, 47551509848063,
2267+ERASE, 47551509835776, 47551509835776,
2268+STORE, 47551509835776, 47551509839871,
2269+STORE, 47551509839872, 47551509848063,
2270+ERASE, 47551509839872, 47551509839872,
2271+STORE, 47551509839872, 47551509848063,
2272+STORE, 47551509848064, 47551509856255,
2273+ERASE, 47551509651456, 47551509651456,
2274+STORE, 47551509651456, 47551509667839,
2275+STORE, 47551509667840, 47551509676031,
2276+ERASE, 47551509839872, 47551509839872,
2277+STORE, 47551509839872, 47551509843967,
2278+STORE, 47551509843968, 47551509848063,
2279+ERASE, 47551509803008, 47551509803008,
2280+STORE, 47551509803008, 47551509807103,
2281+STORE, 47551509807104, 47551509811199,
2282+ERASE, 47551507632128, 47551507632128,
2283+STORE, 47551507632128, 47551507828735,
2284+STORE, 47551507828736, 47551507836927,
2285+ERASE, 47551504793600, 47551504793600,
2286+STORE, 47551504793600, 47551504797695,
2287+STORE, 47551504797696, 47551504801791,
2288+ERASE, 94150123233280, 94150123233280,
2289+STORE, 94150123233280, 94150123241471,
2290+STORE, 94150123241472, 94150123245567,
2291+ERASE, 140081290534912, 140081290534912,
2292+STORE, 140081290534912, 140081290539007,
2293+STORE, 140081290539008, 140081290543103,
2294+ERASE, 47551504621568, 47551504621568,
2295+STORE, 94150148112384, 94150148247551,
2296+STORE, 140737488347136, 140737488351231,
2297+STORE, 140734389334016, 140737488351231,
2298+ERASE, 140734389334016, 140734389334016,
2299+STORE, 140734389334016, 140734389338111,
2300+STORE, 94844636606464, 94844636778495,
2301+ERASE, 94844636606464, 94844636606464,
2302+STORE, 94844636606464, 94844636622847,
2303+STORE, 94844636622848, 94844636778495,
2304+ERASE, 94844636622848, 94844636622848,
2305+STORE, 94844636622848, 94844636725247,
2306+STORE, 94844636725248, 94844636766207,
2307+STORE, 94844636766208, 94844636778495,
2308+STORE, 139922765217792, 139922765389823,
2309+ERASE, 139922765217792, 139922765217792,
2310+STORE, 139922765217792, 139922765221887,
2311+STORE, 139922765221888, 139922765389823,
2312+ERASE, 139922765221888, 139922765221888,
2313+STORE, 139922765221888, 139922765344767,
2314+STORE, 139922765344768, 139922765377535,
2315+STORE, 139922765377536, 139922765385727,
2316+STORE, 139922765385728, 139922765389823,
2317+STORE, 140734389678080, 140734389682175,
2318+STORE, 140734389665792, 140734389678079,
2319+STORE, 47710029778944, 47710029787135,
2320+STORE, 47710029787136, 47710029795327,
2321+STORE, 47710029795328, 47710029959167,
2322+ERASE, 47710029795328, 47710029795328,
2323+STORE, 47710029795328, 47710029807615,
2324+STORE, 47710029807616, 47710029959167,
2325+STORE, 47710029905920, 47710029959167,
2326+STORE, 47710029807616, 47710029905919,
2327+ERASE, 47710029807616, 47710029807616,
2328+STORE, 47710029807616, 47710029905919,
2329+STORE, 47710029950976, 47710029959167,
2330+STORE, 47710029905920, 47710029950975,
2331+ERASE, 47710029905920, 47710029905920,
2332+STORE, 47710029905920, 47710029959167,
2333+ERASE, 47710029905920, 47710029905920,
2334+STORE, 47710029905920, 47710029950975,
2335+STORE, 47710029950976, 47710029959167,
2336+ERASE, 47710029950976, 47710029950976,
2337+STORE, 47710029950976, 47710029959167,
2338+STORE, 47710029959168, 47710033010687,
2339+STORE, 47710030503936, 47710033010687,
2340+STORE, 47710029959168, 47710030503935,
2341+ERASE, 47710030503936, 47710030503936,
2342+STORE, 47710030503936, 47710032789503,
2343+STORE, 47710032789504, 47710033010687,
2344+STORE, 47710032199680, 47710032789503,
2345+STORE, 47710030503936, 47710032199679,
2346+ERASE, 47710030503936, 47710030503936,
2347+STORE, 47710030503936, 47710032199679,
2348+STORE, 47710032785408, 47710032789503,
2349+STORE, 47710032199680, 47710032785407,
2350+ERASE, 47710032199680, 47710032199680,
2351+STORE, 47710032199680, 47710032785407,
2352+STORE, 47710032994304, 47710033010687,
2353+STORE, 47710032789504, 47710032994303,
2354+ERASE, 47710032789504, 47710032789504,
2355+STORE, 47710032789504, 47710032994303,
2356+ERASE, 47710032994304, 47710032994304,
2357+STORE, 47710032994304, 47710033010687,
2358+STORE, 47710033010688, 47710034849791,
2359+STORE, 47710033149952, 47710034849791,
2360+STORE, 47710033010688, 47710033149951,
2361+ERASE, 47710033149952, 47710033149952,
2362+STORE, 47710033149952, 47710034808831,
2363+STORE, 47710034808832, 47710034849791,
2364+STORE, 47710034493440, 47710034808831,
2365+STORE, 47710033149952, 47710034493439,
2366+ERASE, 47710033149952, 47710033149952,
2367+STORE, 47710033149952, 47710034493439,
2368+STORE, 47710034804736, 47710034808831,
2369+STORE, 47710034493440, 47710034804735,
2370+ERASE, 47710034493440, 47710034493440,
2371+STORE, 47710034493440, 47710034804735,
2372+STORE, 47710034833408, 47710034849791,
2373+STORE, 47710034808832, 47710034833407,
2374+ERASE, 47710034808832, 47710034808832,
2375+STORE, 47710034808832, 47710034833407,
2376+ERASE, 47710034833408, 47710034833408,
2377+STORE, 47710034833408, 47710034849791,
2378+STORE, 47710034849792, 47710034984959,
2379+ERASE, 47710034849792, 47710034849792,
2380+STORE, 47710034849792, 47710034874367,
2381+STORE, 47710034874368, 47710034984959,
2382+STORE, 47710034935808, 47710034984959,
2383+STORE, 47710034874368, 47710034935807,
2384+ERASE, 47710034874368, 47710034874368,
2385+STORE, 47710034874368, 47710034935807,
2386+STORE, 47710034960384, 47710034984959,
2387+STORE, 47710034935808, 47710034960383,
2388+ERASE, 47710034935808, 47710034935808,
2389+STORE, 47710034935808, 47710034984959,
2390+ERASE, 47710034935808, 47710034935808,
2391+STORE, 47710034935808, 47710034960383,
2392+STORE, 47710034960384, 47710034984959,
2393+STORE, 47710034968576, 47710034984959,
2394+STORE, 47710034960384, 47710034968575,
2395+ERASE, 47710034960384, 47710034960384,
2396+STORE, 47710034960384, 47710034968575,
2397+ERASE, 47710034968576, 47710034968576,
2398+STORE, 47710034968576, 47710034984959,
2399+STORE, 47710034984960, 47710035005439,
2400+ERASE, 47710034984960, 47710034984960,
2401+STORE, 47710034984960, 47710034989055,
2402+STORE, 47710034989056, 47710035005439,
2403+STORE, 47710034993152, 47710035005439,
2404+STORE, 47710034989056, 47710034993151,
2405+ERASE, 47710034989056, 47710034989056,
2406+STORE, 47710034989056, 47710034993151,
2407+STORE, 47710034997248, 47710035005439,
2408+STORE, 47710034993152, 47710034997247,
2409+ERASE, 47710034993152, 47710034993152,
2410+STORE, 47710034993152, 47710035005439,
2411+ERASE, 47710034993152, 47710034993152,
2412+STORE, 47710034993152, 47710034997247,
2413+STORE, 47710034997248, 47710035005439,
2414+ERASE, 47710034997248, 47710034997248,
2415+STORE, 47710034997248, 47710035005439,
2416+STORE, 47710035005440, 47710035013631,
2417+ERASE, 47710034808832, 47710034808832,
2418+STORE, 47710034808832, 47710034825215,
2419+STORE, 47710034825216, 47710034833407,
2420+ERASE, 47710034997248, 47710034997248,
2421+STORE, 47710034997248, 47710035001343,
2422+STORE, 47710035001344, 47710035005439,
2423+ERASE, 47710034960384, 47710034960384,
2424+STORE, 47710034960384, 47710034964479,
2425+STORE, 47710034964480, 47710034968575,
2426+ERASE, 47710032789504, 47710032789504,
2427+STORE, 47710032789504, 47710032986111,
2428+STORE, 47710032986112, 47710032994303,
2429+ERASE, 47710029950976, 47710029950976,
2430+STORE, 47710029950976, 47710029955071,
2431+STORE, 47710029955072, 47710029959167,
2432+ERASE, 94844636766208, 94844636766208,
2433+STORE, 94844636766208, 94844636774399,
2434+STORE, 94844636774400, 94844636778495,
2435+ERASE, 139922765377536, 139922765377536,
2436+STORE, 139922765377536, 139922765381631,
2437+STORE, 139922765381632, 139922765385727,
2438+ERASE, 47710029778944, 47710029778944,
2439+STORE, 94844641775616, 94844641910783,
2440+STORE, 140737488347136, 140737488351231,
2441+STORE, 140732213886976, 140737488351231,
2442+ERASE, 140732213886976, 140732213886976,
2443+STORE, 140732213886976, 140732213891071,
2444+STORE, 94240508887040, 94240509059071,
2445+ERASE, 94240508887040, 94240508887040,
2446+STORE, 94240508887040, 94240508903423,
2447+STORE, 94240508903424, 94240509059071,
2448+ERASE, 94240508903424, 94240508903424,
2449+STORE, 94240508903424, 94240509005823,
2450+STORE, 94240509005824, 94240509046783,
2451+STORE, 94240509046784, 94240509059071,
2452+STORE, 140275106516992, 140275106689023,
2453+ERASE, 140275106516992, 140275106516992,
2454+STORE, 140275106516992, 140275106521087,
2455+STORE, 140275106521088, 140275106689023,
2456+ERASE, 140275106521088, 140275106521088,
2457+STORE, 140275106521088, 140275106643967,
2458+STORE, 140275106643968, 140275106676735,
2459+STORE, 140275106676736, 140275106684927,
2460+STORE, 140275106684928, 140275106689023,
2461+STORE, 140732213977088, 140732213981183,
2462+STORE, 140732213964800, 140732213977087,
2463+STORE, 47357688479744, 47357688487935,
2464+STORE, 47357688487936, 47357688496127,
2465+STORE, 47357688496128, 47357688659967,
2466+ERASE, 47357688496128, 47357688496128,
2467+STORE, 47357688496128, 47357688508415,
2468+STORE, 47357688508416, 47357688659967,
2469+STORE, 47357688606720, 47357688659967,
2470+STORE, 47357688508416, 47357688606719,
2471+ERASE, 47357688508416, 47357688508416,
2472+STORE, 47357688508416, 47357688606719,
2473+STORE, 47357688651776, 47357688659967,
2474+STORE, 47357688606720, 47357688651775,
2475+ERASE, 47357688606720, 47357688606720,
2476+STORE, 47357688606720, 47357688659967,
2477+ERASE, 47357688606720, 47357688606720,
2478+STORE, 47357688606720, 47357688651775,
2479+STORE, 47357688651776, 47357688659967,
2480+ERASE, 47357688651776, 47357688651776,
2481+STORE, 47357688651776, 47357688659967,
2482+STORE, 47357688659968, 47357691711487,
2483+STORE, 47357689204736, 47357691711487,
2484+STORE, 47357688659968, 47357689204735,
2485+ERASE, 47357689204736, 47357689204736,
2486+STORE, 47357689204736, 47357691490303,
2487+STORE, 47357691490304, 47357691711487,
2488+STORE, 47357690900480, 47357691490303,
2489+STORE, 47357689204736, 47357690900479,
2490+ERASE, 47357689204736, 47357689204736,
2491+STORE, 47357689204736, 47357690900479,
2492+STORE, 47357691486208, 47357691490303,
2493+STORE, 47357690900480, 47357691486207,
2494+ERASE, 47357690900480, 47357690900480,
2495+STORE, 47357690900480, 47357691486207,
2496+STORE, 47357691695104, 47357691711487,
2497+STORE, 47357691490304, 47357691695103,
2498+ERASE, 47357691490304, 47357691490304,
2499+STORE, 47357691490304, 47357691695103,
2500+ERASE, 47357691695104, 47357691695104,
2501+STORE, 47357691695104, 47357691711487,
2502+STORE, 47357691711488, 47357693550591,
2503+STORE, 47357691850752, 47357693550591,
2504+STORE, 47357691711488, 47357691850751,
2505+ERASE, 47357691850752, 47357691850752,
2506+STORE, 47357691850752, 47357693509631,
2507+STORE, 47357693509632, 47357693550591,
2508+STORE, 47357693194240, 47357693509631,
2509+STORE, 47357691850752, 47357693194239,
2510+ERASE, 47357691850752, 47357691850752,
2511+STORE, 47357691850752, 47357693194239,
2512+STORE, 47357693505536, 47357693509631,
2513+STORE, 47357693194240, 47357693505535,
2514+ERASE, 47357693194240, 47357693194240,
2515+STORE, 47357693194240, 47357693505535,
2516+STORE, 47357693534208, 47357693550591,
2517+STORE, 47357693509632, 47357693534207,
2518+ERASE, 47357693509632, 47357693509632,
2519+STORE, 47357693509632, 47357693534207,
2520+ERASE, 47357693534208, 47357693534208,
2521+STORE, 47357693534208, 47357693550591,
2522+STORE, 47357693550592, 47357693685759,
2523+ERASE, 47357693550592, 47357693550592,
2524+STORE, 47357693550592, 47357693575167,
2525+STORE, 47357693575168, 47357693685759,
2526+STORE, 47357693636608, 47357693685759,
2527+STORE, 47357693575168, 47357693636607,
2528+ERASE, 47357693575168, 47357693575168,
2529+STORE, 47357693575168, 47357693636607,
2530+STORE, 47357693661184, 47357693685759,
2531+STORE, 47357693636608, 47357693661183,
2532+ERASE, 47357693636608, 47357693636608,
2533+STORE, 47357693636608, 47357693685759,
2534+ERASE, 47357693636608, 47357693636608,
2535+STORE, 47357693636608, 47357693661183,
2536+STORE, 47357693661184, 47357693685759,
2537+STORE, 47357693669376, 47357693685759,
2538+STORE, 47357693661184, 47357693669375,
2539+ERASE, 47357693661184, 47357693661184,
2540+STORE, 47357693661184, 47357693669375,
2541+ERASE, 47357693669376, 47357693669376,
2542+STORE, 47357693669376, 47357693685759,
2543+STORE, 47357693685760, 47357693706239,
2544+ERASE, 47357693685760, 47357693685760,
2545+STORE, 47357693685760, 47357693689855,
2546+STORE, 47357693689856, 47357693706239,
2547+STORE, 47357693693952, 47357693706239,
2548+STORE, 47357693689856, 47357693693951,
2549+ERASE, 47357693689856, 47357693689856,
2550+STORE, 47357693689856, 47357693693951,
2551+STORE, 47357693698048, 47357693706239,
2552+STORE, 47357693693952, 47357693698047,
2553+ERASE, 47357693693952, 47357693693952,
2554+STORE, 47357693693952, 47357693706239,
2555+ERASE, 47357693693952, 47357693693952,
2556+STORE, 47357693693952, 47357693698047,
2557+STORE, 47357693698048, 47357693706239,
2558+ERASE, 47357693698048, 47357693698048,
2559+STORE, 47357693698048, 47357693706239,
2560+STORE, 47357693706240, 47357693714431,
2561+ERASE, 47357693509632, 47357693509632,
2562+STORE, 47357693509632, 47357693526015,
2563+STORE, 47357693526016, 47357693534207,
2564+ERASE, 47357693698048, 47357693698048,
2565+STORE, 47357693698048, 47357693702143,
2566+STORE, 47357693702144, 47357693706239,
2567+ERASE, 47357693661184, 47357693661184,
2568+STORE, 47357693661184, 47357693665279,
2569+STORE, 47357693665280, 47357693669375,
2570+ERASE, 47357691490304, 47357691490304,
2571+STORE, 47357691490304, 47357691686911,
2572+STORE, 47357691686912, 47357691695103,
2573+ERASE, 47357688651776, 47357688651776,
2574+STORE, 47357688651776, 47357688655871,
2575+STORE, 47357688655872, 47357688659967,
2576+ERASE, 94240509046784, 94240509046784,
2577+STORE, 94240509046784, 94240509054975,
2578+STORE, 94240509054976, 94240509059071,
2579+ERASE, 140275106676736, 140275106676736,
2580+STORE, 140275106676736, 140275106680831,
2581+STORE, 140275106680832, 140275106684927,
2582+ERASE, 47357688479744, 47357688479744,
2583+STORE, 94240518361088, 94240518496255,
2584+STORE, 140737488347136, 140737488351231,
2585+STORE, 140732688277504, 140737488351231,
2586+ERASE, 140732688277504, 140732688277504,
2587+STORE, 140732688277504, 140732688281599,
2588+STORE, 94629171351552, 94629172064255,
2589+ERASE, 94629171351552, 94629171351552,
2590+STORE, 94629171351552, 94629171400703,
2591+STORE, 94629171400704, 94629172064255,
2592+ERASE, 94629171400704, 94629171400704,
2593+STORE, 94629171400704, 94629171945471,
2594+STORE, 94629171945472, 94629172043775,
2595+STORE, 94629172043776, 94629172064255,
2596+STORE, 139770707644416, 139770707816447,
2597+ERASE, 139770707644416, 139770707644416,
2598+STORE, 139770707644416, 139770707648511,
2599+STORE, 139770707648512, 139770707816447,
2600+ERASE, 139770707648512, 139770707648512,
2601+STORE, 139770707648512, 139770707771391,
2602+STORE, 139770707771392, 139770707804159,
2603+STORE, 139770707804160, 139770707812351,
2604+STORE, 139770707812352, 139770707816447,
2605+STORE, 140732689121280, 140732689125375,
2606+STORE, 140732689108992, 140732689121279,
2607+STORE, 47862087352320, 47862087360511,
2608+STORE, 47862087360512, 47862087368703,
2609+STORE, 47862087368704, 47862087475199,
2610+STORE, 47862087385088, 47862087475199,
2611+STORE, 47862087368704, 47862087385087,
2612+ERASE, 47862087385088, 47862087385088,
2613+STORE, 47862087385088, 47862087458815,
2614+STORE, 47862087458816, 47862087475199,
2615+STORE, 47862087438336, 47862087458815,
2616+STORE, 47862087385088, 47862087438335,
2617+ERASE, 47862087385088, 47862087385088,
2618+STORE, 47862087385088, 47862087438335,
2619+STORE, 47862087454720, 47862087458815,
2620+STORE, 47862087438336, 47862087454719,
2621+ERASE, 47862087438336, 47862087438336,
2622+STORE, 47862087438336, 47862087454719,
2623+STORE, 47862087467008, 47862087475199,
2624+STORE, 47862087458816, 47862087467007,
2625+ERASE, 47862087458816, 47862087458816,
2626+STORE, 47862087458816, 47862087467007,
2627+ERASE, 47862087467008, 47862087467008,
2628+STORE, 47862087467008, 47862087475199,
2629+STORE, 47862087475200, 47862089314303,
2630+STORE, 47862087614464, 47862089314303,
2631+STORE, 47862087475200, 47862087614463,
2632+ERASE, 47862087614464, 47862087614464,
2633+STORE, 47862087614464, 47862089273343,
2634+STORE, 47862089273344, 47862089314303,
2635+STORE, 47862088957952, 47862089273343,
2636+STORE, 47862087614464, 47862088957951,
2637+ERASE, 47862087614464, 47862087614464,
2638+STORE, 47862087614464, 47862088957951,
2639+STORE, 47862089269248, 47862089273343,
2640+STORE, 47862088957952, 47862089269247,
2641+ERASE, 47862088957952, 47862088957952,
2642+STORE, 47862088957952, 47862089269247,
2643+STORE, 47862089297920, 47862089314303,
2644+STORE, 47862089273344, 47862089297919,
2645+ERASE, 47862089273344, 47862089273344,
2646+STORE, 47862089273344, 47862089297919,
2647+ERASE, 47862089297920, 47862089297920,
2648+STORE, 47862089297920, 47862089314303,
2649+STORE, 47862089297920, 47862089326591,
2650+ERASE, 47862089273344, 47862089273344,
2651+STORE, 47862089273344, 47862089289727,
2652+STORE, 47862089289728, 47862089297919,
2653+ERASE, 47862087458816, 47862087458816,
2654+STORE, 47862087458816, 47862087462911,
2655+STORE, 47862087462912, 47862087467007,
2656+ERASE, 94629172043776, 94629172043776,
2657+STORE, 94629172043776, 94629172060159,
2658+STORE, 94629172060160, 94629172064255,
2659+ERASE, 139770707804160, 139770707804160,
2660+STORE, 139770707804160, 139770707808255,
2661+STORE, 139770707808256, 139770707812351,
2662+ERASE, 47862087352320, 47862087352320,
2663+STORE, 94629197533184, 94629197668351,
2664+STORE, 140737488347136, 140737488351231,
2665+STORE, 140727540711424, 140737488351231,
2666+ERASE, 140727540711424, 140727540711424,
2667+STORE, 140727540711424, 140727540715519,
2668+STORE, 94299865313280, 94299866025983,
2669+ERASE, 94299865313280, 94299865313280,
2670+STORE, 94299865313280, 94299865362431,
2671+STORE, 94299865362432, 94299866025983,
2672+ERASE, 94299865362432, 94299865362432,
2673+STORE, 94299865362432, 94299865907199,
2674+STORE, 94299865907200, 94299866005503,
2675+STORE, 94299866005504, 94299866025983,
2676+STORE, 140680268763136, 140680268935167,
2677+ERASE, 140680268763136, 140680268763136,
2678+STORE, 140680268763136, 140680268767231,
2679+STORE, 140680268767232, 140680268935167,
2680+ERASE, 140680268767232, 140680268767232,
2681+STORE, 140680268767232, 140680268890111,
2682+STORE, 140680268890112, 140680268922879,
2683+STORE, 140680268922880, 140680268931071,
2684+STORE, 140680268931072, 140680268935167,
2685+STORE, 140727541424128, 140727541428223,
2686+STORE, 140727541411840, 140727541424127,
2687+STORE, 46952526233600, 46952526241791,
2688+STORE, 46952526241792, 46952526249983,
2689+STORE, 46952526249984, 46952526356479,
2690+STORE, 46952526266368, 46952526356479,
2691+STORE, 46952526249984, 46952526266367,
2692+ERASE, 46952526266368, 46952526266368,
2693+STORE, 46952526266368, 46952526340095,
2694+STORE, 46952526340096, 46952526356479,
2695+STORE, 46952526319616, 46952526340095,
2696+STORE, 46952526266368, 46952526319615,
2697+ERASE, 46952526266368, 46952526266368,
2698+STORE, 46952526266368, 46952526319615,
2699+STORE, 46952526336000, 46952526340095,
2700+STORE, 46952526319616, 46952526335999,
2701+ERASE, 46952526319616, 46952526319616,
2702+STORE, 46952526319616, 46952526335999,
2703+STORE, 46952526348288, 46952526356479,
2704+STORE, 46952526340096, 46952526348287,
2705+ERASE, 46952526340096, 46952526340096,
2706+STORE, 46952526340096, 46952526348287,
2707+ERASE, 46952526348288, 46952526348288,
2708+STORE, 46952526348288, 46952526356479,
2709+STORE, 46952526356480, 46952528195583,
2710+STORE, 46952526495744, 46952528195583,
2711+STORE, 46952526356480, 46952526495743,
2712+ERASE, 46952526495744, 46952526495744,
2713+STORE, 46952526495744, 46952528154623,
2714+STORE, 46952528154624, 46952528195583,
2715+STORE, 46952527839232, 46952528154623,
2716+STORE, 46952526495744, 46952527839231,
2717+ERASE, 46952526495744, 46952526495744,
2718+STORE, 46952526495744, 46952527839231,
2719+STORE, 46952528150528, 46952528154623,
2720+STORE, 46952527839232, 46952528150527,
2721+ERASE, 46952527839232, 46952527839232,
2722+STORE, 46952527839232, 46952528150527,
2723+STORE, 46952528179200, 46952528195583,
2724+STORE, 46952528154624, 46952528179199,
2725+ERASE, 46952528154624, 46952528154624,
2726+STORE, 46952528154624, 46952528179199,
2727+ERASE, 46952528179200, 46952528179200,
2728+STORE, 46952528179200, 46952528195583,
2729+STORE, 46952528179200, 46952528207871,
2730+ERASE, 46952528154624, 46952528154624,
2731+STORE, 46952528154624, 46952528171007,
2732+STORE, 46952528171008, 46952528179199,
2733+ERASE, 46952526340096, 46952526340096,
2734+STORE, 46952526340096, 46952526344191,
2735+STORE, 46952526344192, 46952526348287,
2736+ERASE, 94299866005504, 94299866005504,
2737+STORE, 94299866005504, 94299866021887,
2738+STORE, 94299866021888, 94299866025983,
2739+ERASE, 140680268922880, 140680268922880,
2740+STORE, 140680268922880, 140680268926975,
2741+STORE, 140680268926976, 140680268931071,
2742+ERASE, 46952526233600, 46952526233600,
2743+STORE, 140737488347136, 140737488351231,
2744+STORE, 140722874793984, 140737488351231,
2745+ERASE, 140722874793984, 140722874793984,
2746+STORE, 140722874793984, 140722874798079,
2747+STORE, 94448916213760, 94448916926463,
2748+ERASE, 94448916213760, 94448916213760,
2749+STORE, 94448916213760, 94448916262911,
2750+STORE, 94448916262912, 94448916926463,
2751+ERASE, 94448916262912, 94448916262912,
2752+STORE, 94448916262912, 94448916807679,
2753+STORE, 94448916807680, 94448916905983,
2754+STORE, 94448916905984, 94448916926463,
2755+STORE, 140389117046784, 140389117218815,
2756+ERASE, 140389117046784, 140389117046784,
2757+STORE, 140389117046784, 140389117050879,
2758+STORE, 140389117050880, 140389117218815,
2759+ERASE, 140389117050880, 140389117050880,
2760+STORE, 140389117050880, 140389117173759,
2761+STORE, 140389117173760, 140389117206527,
2762+STORE, 140389117206528, 140389117214719,
2763+STORE, 140389117214720, 140389117218815,
2764+STORE, 140722875297792, 140722875301887,
2765+STORE, 140722875285504, 140722875297791,
2766+STORE, 47243677949952, 47243677958143,
2767+STORE, 47243677958144, 47243677966335,
2768+STORE, 47243677966336, 47243678072831,
2769+STORE, 47243677982720, 47243678072831,
2770+STORE, 47243677966336, 47243677982719,
2771+ERASE, 47243677982720, 47243677982720,
2772+STORE, 47243677982720, 47243678056447,
2773+STORE, 47243678056448, 47243678072831,
2774+STORE, 47243678035968, 47243678056447,
2775+STORE, 47243677982720, 47243678035967,
2776+ERASE, 47243677982720, 47243677982720,
2777+STORE, 47243677982720, 47243678035967,
2778+STORE, 47243678052352, 47243678056447,
2779+STORE, 47243678035968, 47243678052351,
2780+ERASE, 47243678035968, 47243678035968,
2781+STORE, 47243678035968, 47243678052351,
2782+STORE, 47243678064640, 47243678072831,
2783+STORE, 47243678056448, 47243678064639,
2784+ERASE, 47243678056448, 47243678056448,
2785+STORE, 47243678056448, 47243678064639,
2786+ERASE, 47243678064640, 47243678064640,
2787+STORE, 47243678064640, 47243678072831,
2788+STORE, 47243678072832, 47243679911935,
2789+STORE, 47243678212096, 47243679911935,
2790+STORE, 47243678072832, 47243678212095,
2791+ERASE, 47243678212096, 47243678212096,
2792+STORE, 47243678212096, 47243679870975,
2793+STORE, 47243679870976, 47243679911935,
2794+STORE, 47243679555584, 47243679870975,
2795+STORE, 47243678212096, 47243679555583,
2796+ERASE, 47243678212096, 47243678212096,
2797+STORE, 47243678212096, 47243679555583,
2798+STORE, 47243679866880, 47243679870975,
2799+STORE, 47243679555584, 47243679866879,
2800+ERASE, 47243679555584, 47243679555584,
2801+STORE, 47243679555584, 47243679866879,
2802+STORE, 47243679895552, 47243679911935,
2803+STORE, 47243679870976, 47243679895551,
2804+ERASE, 47243679870976, 47243679870976,
2805+STORE, 47243679870976, 47243679895551,
2806+ERASE, 47243679895552, 47243679895552,
2807+STORE, 47243679895552, 47243679911935,
2808+STORE, 47243679895552, 47243679924223,
2809+ERASE, 47243679870976, 47243679870976,
2810+STORE, 47243679870976, 47243679887359,
2811+STORE, 47243679887360, 47243679895551,
2812+ERASE, 47243678056448, 47243678056448,
2813+STORE, 47243678056448, 47243678060543,
2814+STORE, 47243678060544, 47243678064639,
2815+ERASE, 94448916905984, 94448916905984,
2816+STORE, 94448916905984, 94448916922367,
2817+STORE, 94448916922368, 94448916926463,
2818+ERASE, 140389117206528, 140389117206528,
2819+STORE, 140389117206528, 140389117210623,
2820+STORE, 140389117210624, 140389117214719,
2821+ERASE, 47243677949952, 47243677949952,
2822+STORE, 140737488347136, 140737488351231,
2823+STORE, 140733068505088, 140737488351231,
2824+ERASE, 140733068505088, 140733068505088,
2825+STORE, 140733068505088, 140733068509183,
2826+STORE, 94207145750528, 94207146463231,
2827+ERASE, 94207145750528, 94207145750528,
2828+STORE, 94207145750528, 94207145799679,
2829+STORE, 94207145799680, 94207146463231,
2830+ERASE, 94207145799680, 94207145799680,
2831+STORE, 94207145799680, 94207146344447,
2832+STORE, 94207146344448, 94207146442751,
2833+STORE, 94207146442752, 94207146463231,
2834+STORE, 140684504911872, 140684505083903,
2835+ERASE, 140684504911872, 140684504911872,
2836+STORE, 140684504911872, 140684504915967,
2837+STORE, 140684504915968, 140684505083903,
2838+ERASE, 140684504915968, 140684504915968,
2839+STORE, 140684504915968, 140684505038847,
2840+STORE, 140684505038848, 140684505071615,
2841+STORE, 140684505071616, 140684505079807,
2842+STORE, 140684505079808, 140684505083903,
2843+STORE, 140733068607488, 140733068611583,
2844+STORE, 140733068595200, 140733068607487,
2845+STORE, 46948290084864, 46948290093055,
2846+STORE, 46948290093056, 46948290101247,
2847+STORE, 46948290101248, 46948290207743,
2848+STORE, 46948290117632, 46948290207743,
2849+STORE, 46948290101248, 46948290117631,
2850+ERASE, 46948290117632, 46948290117632,
2851+STORE, 46948290117632, 46948290191359,
2852+STORE, 46948290191360, 46948290207743,
2853+STORE, 46948290170880, 46948290191359,
2854+STORE, 46948290117632, 46948290170879,
2855+ERASE, 46948290117632, 46948290117632,
2856+STORE, 46948290117632, 46948290170879,
2857+STORE, 46948290187264, 46948290191359,
2858+STORE, 46948290170880, 46948290187263,
2859+ERASE, 46948290170880, 46948290170880,
2860+STORE, 46948290170880, 46948290187263,
2861+STORE, 46948290199552, 46948290207743,
2862+STORE, 46948290191360, 46948290199551,
2863+ERASE, 46948290191360, 46948290191360,
2864+STORE, 46948290191360, 46948290199551,
2865+ERASE, 46948290199552, 46948290199552,
2866+STORE, 46948290199552, 46948290207743,
2867+STORE, 46948290207744, 46948292046847,
2868+STORE, 46948290347008, 46948292046847,
2869+STORE, 46948290207744, 46948290347007,
2870+ERASE, 46948290347008, 46948290347008,
2871+STORE, 46948290347008, 46948292005887,
2872+STORE, 46948292005888, 46948292046847,
2873+STORE, 46948291690496, 46948292005887,
2874+STORE, 46948290347008, 46948291690495,
2875+ERASE, 46948290347008, 46948290347008,
2876+STORE, 46948290347008, 46948291690495,
2877+STORE, 46948292001792, 46948292005887,
2878+STORE, 46948291690496, 46948292001791,
2879+ERASE, 46948291690496, 46948291690496,
2880+STORE, 46948291690496, 46948292001791,
2881+STORE, 46948292030464, 46948292046847,
2882+STORE, 46948292005888, 46948292030463,
2883+ERASE, 46948292005888, 46948292005888,
2884+STORE, 46948292005888, 46948292030463,
2885+ERASE, 46948292030464, 46948292030464,
2886+STORE, 46948292030464, 46948292046847,
2887+STORE, 46948292030464, 46948292059135,
2888+ERASE, 46948292005888, 46948292005888,
2889+STORE, 46948292005888, 46948292022271,
2890+STORE, 46948292022272, 46948292030463,
2891+ERASE, 46948290191360, 46948290191360,
2892+STORE, 46948290191360, 46948290195455,
2893+STORE, 46948290195456, 46948290199551,
2894+ERASE, 94207146442752, 94207146442752,
2895+STORE, 94207146442752, 94207146459135,
2896+STORE, 94207146459136, 94207146463231,
2897+ERASE, 140684505071616, 140684505071616,
2898+STORE, 140684505071616, 140684505075711,
2899+STORE, 140684505075712, 140684505079807,
2900+ERASE, 46948290084864, 46948290084864,
2901+STORE, 140737488347136, 140737488351231,
2902+STORE, 140726367158272, 140737488351231,
2903+ERASE, 140726367158272, 140726367158272,
2904+STORE, 140726367158272, 140726367162367,
2905+STORE, 94436124106752, 94436124819455,
2906+ERASE, 94436124106752, 94436124106752,
2907+STORE, 94436124106752, 94436124155903,
2908+STORE, 94436124155904, 94436124819455,
2909+ERASE, 94436124155904, 94436124155904,
2910+STORE, 94436124155904, 94436124700671,
2911+STORE, 94436124700672, 94436124798975,
2912+STORE, 94436124798976, 94436124819455,
2913+STORE, 140049025044480, 140049025216511,
2914+ERASE, 140049025044480, 140049025044480,
2915+STORE, 140049025044480, 140049025048575,
2916+STORE, 140049025048576, 140049025216511,
2917+ERASE, 140049025048576, 140049025048576,
2918+STORE, 140049025048576, 140049025171455,
2919+STORE, 140049025171456, 140049025204223,
2920+STORE, 140049025204224, 140049025212415,
2921+STORE, 140049025212416, 140049025216511,
2922+STORE, 140726367256576, 140726367260671,
2923+STORE, 140726367244288, 140726367256575,
2924+STORE, 47583769952256, 47583769960447,
2925+STORE, 47583769960448, 47583769968639,
2926+STORE, 47583769968640, 47583770075135,
2927+STORE, 47583769985024, 47583770075135,
2928+STORE, 47583769968640, 47583769985023,
2929+ERASE, 47583769985024, 47583769985024,
2930+STORE, 47583769985024, 47583770058751,
2931+STORE, 47583770058752, 47583770075135,
2932+STORE, 47583770038272, 47583770058751,
2933+STORE, 47583769985024, 47583770038271,
2934+ERASE, 47583769985024, 47583769985024,
2935+STORE, 47583769985024, 47583770038271,
2936+STORE, 47583770054656, 47583770058751,
2937+STORE, 47583770038272, 47583770054655,
2938+ERASE, 47583770038272, 47583770038272,
2939+STORE, 47583770038272, 47583770054655,
2940+STORE, 47583770066944, 47583770075135,
2941+STORE, 47583770058752, 47583770066943,
2942+ERASE, 47583770058752, 47583770058752,
2943+STORE, 47583770058752, 47583770066943,
2944+ERASE, 47583770066944, 47583770066944,
2945+STORE, 47583770066944, 47583770075135,
2946+STORE, 47583770075136, 47583771914239,
2947+STORE, 47583770214400, 47583771914239,
2948+STORE, 47583770075136, 47583770214399,
2949+ERASE, 47583770214400, 47583770214400,
2950+STORE, 47583770214400, 47583771873279,
2951+STORE, 47583771873280, 47583771914239,
2952+STORE, 47583771557888, 47583771873279,
2953+STORE, 47583770214400, 47583771557887,
2954+ERASE, 47583770214400, 47583770214400,
2955+STORE, 47583770214400, 47583771557887,
2956+STORE, 47583771869184, 47583771873279,
2957+STORE, 47583771557888, 47583771869183,
2958+ERASE, 47583771557888, 47583771557888,
2959+STORE, 47583771557888, 47583771869183,
2960+STORE, 47583771897856, 47583771914239,
2961+STORE, 47583771873280, 47583771897855,
2962+ERASE, 47583771873280, 47583771873280,
2963+STORE, 47583771873280, 47583771897855,
2964+ERASE, 47583771897856, 47583771897856,
2965+STORE, 47583771897856, 47583771914239,
2966+STORE, 47583771897856, 47583771926527,
2967+ERASE, 47583771873280, 47583771873280,
2968+STORE, 47583771873280, 47583771889663,
2969+STORE, 47583771889664, 47583771897855,
2970+ERASE, 47583770058752, 47583770058752,
2971+STORE, 47583770058752, 47583770062847,
2972+STORE, 47583770062848, 47583770066943,
2973+ERASE, 94436124798976, 94436124798976,
2974+STORE, 94436124798976, 94436124815359,
2975+STORE, 94436124815360, 94436124819455,
2976+ERASE, 140049025204224, 140049025204224,
2977+STORE, 140049025204224, 140049025208319,
2978+STORE, 140049025208320, 140049025212415,
2979+ERASE, 47583769952256, 47583769952256,
2980+STORE, 140737488347136, 140737488351231,
2981+STORE, 140727116099584, 140737488351231,
2982+ERASE, 140727116099584, 140727116099584,
2983+STORE, 140727116099584, 140727116103679,
2984+STORE, 94166319734784, 94166320447487,
2985+ERASE, 94166319734784, 94166319734784,
2986+STORE, 94166319734784, 94166319783935,
2987+STORE, 94166319783936, 94166320447487,
2988+ERASE, 94166319783936, 94166319783936,
2989+STORE, 94166319783936, 94166320328703,
2990+STORE, 94166320328704, 94166320427007,
2991+STORE, 94166320427008, 94166320447487,
2992+STORE, 139976559542272, 139976559714303,
2993+ERASE, 139976559542272, 139976559542272,
2994+STORE, 139976559542272, 139976559546367,
2995+STORE, 139976559546368, 139976559714303,
2996+ERASE, 139976559546368, 139976559546368,
2997+STORE, 139976559546368, 139976559669247,
2998+STORE, 139976559669248, 139976559702015,
2999+STORE, 139976559702016, 139976559710207,
3000+STORE, 139976559710208, 139976559714303,
3001+STORE, 140727116222464, 140727116226559,
3002+STORE, 140727116210176, 140727116222463,
3003+STORE, 47656235454464, 47656235462655,
3004+STORE, 47656235462656, 47656235470847,
3005+STORE, 47656235470848, 47656235577343,
3006+STORE, 47656235487232, 47656235577343,
3007+STORE, 47656235470848, 47656235487231,
3008+ERASE, 47656235487232, 47656235487232,
3009+STORE, 47656235487232, 47656235560959,
3010+STORE, 47656235560960, 47656235577343,
3011+STORE, 47656235540480, 47656235560959,
3012+STORE, 47656235487232, 47656235540479,
3013+ERASE, 47656235487232, 47656235487232,
3014+STORE, 47656235487232, 47656235540479,
3015+STORE, 47656235556864, 47656235560959,
3016+STORE, 47656235540480, 47656235556863,
3017+ERASE, 47656235540480, 47656235540480,
3018+STORE, 47656235540480, 47656235556863,
3019+STORE, 47656235569152, 47656235577343,
3020+STORE, 47656235560960, 47656235569151,
3021+ERASE, 47656235560960, 47656235560960,
3022+STORE, 47656235560960, 47656235569151,
3023+ERASE, 47656235569152, 47656235569152,
3024+STORE, 47656235569152, 47656235577343,
3025+STORE, 47656235577344, 47656237416447,
3026+STORE, 47656235716608, 47656237416447,
3027+STORE, 47656235577344, 47656235716607,
3028+ERASE, 47656235716608, 47656235716608,
3029+STORE, 47656235716608, 47656237375487,
3030+STORE, 47656237375488, 47656237416447,
3031+STORE, 47656237060096, 47656237375487,
3032+STORE, 47656235716608, 47656237060095,
3033+ERASE, 47656235716608, 47656235716608,
3034+STORE, 47656235716608, 47656237060095,
3035+STORE, 47656237371392, 47656237375487,
3036+STORE, 47656237060096, 47656237371391,
3037+ERASE, 47656237060096, 47656237060096,
3038+STORE, 47656237060096, 47656237371391,
3039+STORE, 47656237400064, 47656237416447,
3040+STORE, 47656237375488, 47656237400063,
3041+ERASE, 47656237375488, 47656237375488,
3042+STORE, 47656237375488, 47656237400063,
3043+ERASE, 47656237400064, 47656237400064,
3044+STORE, 47656237400064, 47656237416447,
3045+STORE, 47656237400064, 47656237428735,
3046+ERASE, 47656237375488, 47656237375488,
3047+STORE, 47656237375488, 47656237391871,
3048+STORE, 47656237391872, 47656237400063,
3049+ERASE, 47656235560960, 47656235560960,
3050+STORE, 47656235560960, 47656235565055,
3051+STORE, 47656235565056, 47656235569151,
3052+ERASE, 94166320427008, 94166320427008,
3053+STORE, 94166320427008, 94166320443391,
3054+STORE, 94166320443392, 94166320447487,
3055+ERASE, 139976559702016, 139976559702016,
3056+STORE, 139976559702016, 139976559706111,
3057+STORE, 139976559706112, 139976559710207,
3058+ERASE, 47656235454464, 47656235454464,
3059+STORE, 94166332153856, 94166332289023,
3060+STORE, 140737488347136, 140737488351231,
3061+STORE, 140726412816384, 140737488351231,
3062+ERASE, 140726412816384, 140726412816384,
3063+STORE, 140726412816384, 140726412820479,
3064+STORE, 94094884507648, 94094885220351,
3065+ERASE, 94094884507648, 94094884507648,
3066+STORE, 94094884507648, 94094884556799,
3067+STORE, 94094884556800, 94094885220351,
3068+ERASE, 94094884556800, 94094884556800,
3069+STORE, 94094884556800, 94094885101567,
3070+STORE, 94094885101568, 94094885199871,
3071+STORE, 94094885199872, 94094885220351,
3072+STORE, 139773773938688, 139773774110719,
3073+ERASE, 139773773938688, 139773773938688,
3074+STORE, 139773773938688, 139773773942783,
3075+STORE, 139773773942784, 139773774110719,
3076+ERASE, 139773773942784, 139773773942784,
3077+STORE, 139773773942784, 139773774065663,
3078+STORE, 139773774065664, 139773774098431,
3079+STORE, 139773774098432, 139773774106623,
3080+STORE, 139773774106624, 139773774110719,
3081+STORE, 140726412963840, 140726412967935,
3082+STORE, 140726412951552, 140726412963839,
3083+STORE, 47859021058048, 47859021066239,
3084+STORE, 47859021066240, 47859021074431,
3085+STORE, 47859021074432, 47859021180927,
3086+STORE, 47859021090816, 47859021180927,
3087+STORE, 47859021074432, 47859021090815,
3088+ERASE, 47859021090816, 47859021090816,
3089+STORE, 47859021090816, 47859021164543,
3090+STORE, 47859021164544, 47859021180927,
3091+STORE, 47859021144064, 47859021164543,
3092+STORE, 47859021090816, 47859021144063,
3093+ERASE, 47859021090816, 47859021090816,
3094+STORE, 47859021090816, 47859021144063,
3095+STORE, 47859021160448, 47859021164543,
3096+STORE, 47859021144064, 47859021160447,
3097+ERASE, 47859021144064, 47859021144064,
3098+STORE, 47859021144064, 47859021160447,
3099+STORE, 47859021172736, 47859021180927,
3100+STORE, 47859021164544, 47859021172735,
3101+ERASE, 47859021164544, 47859021164544,
3102+STORE, 47859021164544, 47859021172735,
3103+ERASE, 47859021172736, 47859021172736,
3104+STORE, 47859021172736, 47859021180927,
3105+STORE, 47859021180928, 47859023020031,
3106+STORE, 47859021320192, 47859023020031,
3107+STORE, 47859021180928, 47859021320191,
3108+ERASE, 47859021320192, 47859021320192,
3109+STORE, 47859021320192, 47859022979071,
3110+STORE, 47859022979072, 47859023020031,
3111+STORE, 47859022663680, 47859022979071,
3112+STORE, 47859021320192, 47859022663679,
3113+ERASE, 47859021320192, 47859021320192,
3114+STORE, 47859021320192, 47859022663679,
3115+STORE, 47859022974976, 47859022979071,
3116+STORE, 47859022663680, 47859022974975,
3117+ERASE, 47859022663680, 47859022663680,
3118+STORE, 47859022663680, 47859022974975,
3119+STORE, 47859023003648, 47859023020031,
3120+STORE, 47859022979072, 47859023003647,
3121+ERASE, 47859022979072, 47859022979072,
3122+STORE, 47859022979072, 47859023003647,
3123+ERASE, 47859023003648, 47859023003648,
3124+STORE, 47859023003648, 47859023020031,
3125+STORE, 47859023003648, 47859023032319,
3126+ERASE, 47859022979072, 47859022979072,
3127+STORE, 47859022979072, 47859022995455,
3128+STORE, 47859022995456, 47859023003647,
3129+ERASE, 47859021164544, 47859021164544,
3130+STORE, 47859021164544, 47859021168639,
3131+STORE, 47859021168640, 47859021172735,
3132+ERASE, 94094885199872, 94094885199872,
3133+STORE, 94094885199872, 94094885216255,
3134+STORE, 94094885216256, 94094885220351,
3135+ERASE, 139773774098432, 139773774098432,
3136+STORE, 139773774098432, 139773774102527,
3137+STORE, 139773774102528, 139773774106623,
3138+ERASE, 47859021058048, 47859021058048,
3139+STORE, 94094901108736, 94094901243903,
3140+STORE, 140737488347136, 140737488351231,
3141+STORE, 140736567963648, 140737488351231,
3142+ERASE, 140736567963648, 140736567963648,
3143+STORE, 140736567963648, 140736567967743,
3144+STORE, 94924425748480, 94924426461183,
3145+ERASE, 94924425748480, 94924425748480,
3146+STORE, 94924425748480, 94924425797631,
3147+STORE, 94924425797632, 94924426461183,
3148+ERASE, 94924425797632, 94924425797632,
3149+STORE, 94924425797632, 94924426342399,
3150+STORE, 94924426342400, 94924426440703,
3151+STORE, 94924426440704, 94924426461183,
3152+STORE, 140042126319616, 140042126491647,
3153+ERASE, 140042126319616, 140042126319616,
3154+STORE, 140042126319616, 140042126323711,
3155+STORE, 140042126323712, 140042126491647,
3156+ERASE, 140042126323712, 140042126323712,
3157+STORE, 140042126323712, 140042126446591,
3158+STORE, 140042126446592, 140042126479359,
3159+STORE, 140042126479360, 140042126487551,
3160+STORE, 140042126487552, 140042126491647,
3161+STORE, 140736568672256, 140736568676351,
3162+STORE, 140736568659968, 140736568672255,
3163+STORE, 47590668677120, 47590668685311,
3164+STORE, 47590668685312, 47590668693503,
3165+STORE, 47590668693504, 47590668799999,
3166+STORE, 47590668709888, 47590668799999,
3167+STORE, 47590668693504, 47590668709887,
3168+ERASE, 47590668709888, 47590668709888,
3169+STORE, 47590668709888, 47590668783615,
3170+STORE, 47590668783616, 47590668799999,
3171+STORE, 47590668763136, 47590668783615,
3172+STORE, 47590668709888, 47590668763135,
3173+ERASE, 47590668709888, 47590668709888,
3174+STORE, 47590668709888, 47590668763135,
3175+STORE, 47590668779520, 47590668783615,
3176+STORE, 47590668763136, 47590668779519,
3177+ERASE, 47590668763136, 47590668763136,
3178+STORE, 47590668763136, 47590668779519,
3179+STORE, 47590668791808, 47590668799999,
3180+STORE, 47590668783616, 47590668791807,
3181+ERASE, 47590668783616, 47590668783616,
3182+STORE, 47590668783616, 47590668791807,
3183+ERASE, 47590668791808, 47590668791808,
3184+STORE, 47590668791808, 47590668799999,
3185+STORE, 47590668800000, 47590670639103,
3186+STORE, 47590668939264, 47590670639103,
3187+STORE, 47590668800000, 47590668939263,
3188+ERASE, 47590668939264, 47590668939264,
3189+STORE, 47590668939264, 47590670598143,
3190+STORE, 47590670598144, 47590670639103,
3191+STORE, 47590670282752, 47590670598143,
3192+STORE, 47590668939264, 47590670282751,
3193+ERASE, 47590668939264, 47590668939264,
3194+STORE, 47590668939264, 47590670282751,
3195+STORE, 47590670594048, 47590670598143,
3196+STORE, 47590670282752, 47590670594047,
3197+ERASE, 47590670282752, 47590670282752,
3198+STORE, 47590670282752, 47590670594047,
3199+STORE, 47590670622720, 47590670639103,
3200+STORE, 47590670598144, 47590670622719,
3201+ERASE, 47590670598144, 47590670598144,
3202+STORE, 47590670598144, 47590670622719,
3203+ERASE, 47590670622720, 47590670622720,
3204+STORE, 47590670622720, 47590670639103,
3205+STORE, 47590670622720, 47590670651391,
3206+ERASE, 47590670598144, 47590670598144,
3207+STORE, 47590670598144, 47590670614527,
3208+STORE, 47590670614528, 47590670622719,
3209+ERASE, 47590668783616, 47590668783616,
3210+STORE, 47590668783616, 47590668787711,
3211+STORE, 47590668787712, 47590668791807,
3212+ERASE, 94924426440704, 94924426440704,
3213+STORE, 94924426440704, 94924426457087,
3214+STORE, 94924426457088, 94924426461183,
3215+ERASE, 140042126479360, 140042126479360,
3216+STORE, 140042126479360, 140042126483455,
3217+STORE, 140042126483456, 140042126487551,
3218+ERASE, 47590668677120, 47590668677120,
3219+STORE, 140737488347136, 140737488351231,
3220+STORE, 140733281439744, 140737488351231,
3221+ERASE, 140733281439744, 140733281439744,
3222+STORE, 140733281439744, 140733281443839,
3223+STORE, 94490667069440, 94490667782143,
3224+ERASE, 94490667069440, 94490667069440,
3225+STORE, 94490667069440, 94490667118591,
3226+STORE, 94490667118592, 94490667782143,
3227+ERASE, 94490667118592, 94490667118592,
3228+STORE, 94490667118592, 94490667663359,
3229+STORE, 94490667663360, 94490667761663,
3230+STORE, 94490667761664, 94490667782143,
3231+STORE, 139878215118848, 139878215290879,
3232+ERASE, 139878215118848, 139878215118848,
3233+STORE, 139878215118848, 139878215122943,
3234+STORE, 139878215122944, 139878215290879,
3235+ERASE, 139878215122944, 139878215122944,
3236+STORE, 139878215122944, 139878215245823,
3237+STORE, 139878215245824, 139878215278591,
3238+STORE, 139878215278592, 139878215286783,
3239+STORE, 139878215286784, 139878215290879,
3240+STORE, 140733281464320, 140733281468415,
3241+STORE, 140733281452032, 140733281464319,
3242+STORE, 47754579877888, 47754579886079,
3243+STORE, 47754579886080, 47754579894271,
3244+STORE, 47754579894272, 47754580000767,
3245+STORE, 47754579910656, 47754580000767,
3246+STORE, 47754579894272, 47754579910655,
3247+ERASE, 47754579910656, 47754579910656,
3248+STORE, 47754579910656, 47754579984383,
3249+STORE, 47754579984384, 47754580000767,
3250+STORE, 47754579963904, 47754579984383,
3251+STORE, 47754579910656, 47754579963903,
3252+ERASE, 47754579910656, 47754579910656,
3253+STORE, 47754579910656, 47754579963903,
3254+STORE, 47754579980288, 47754579984383,
3255+STORE, 47754579963904, 47754579980287,
3256+ERASE, 47754579963904, 47754579963904,
3257+STORE, 47754579963904, 47754579980287,
3258+STORE, 47754579992576, 47754580000767,
3259+STORE, 47754579984384, 47754579992575,
3260+ERASE, 47754579984384, 47754579984384,
3261+STORE, 47754579984384, 47754579992575,
3262+ERASE, 47754579992576, 47754579992576,
3263+STORE, 47754579992576, 47754580000767,
3264+STORE, 47754580000768, 47754581839871,
3265+STORE, 47754580140032, 47754581839871,
3266+STORE, 47754580000768, 47754580140031,
3267+ERASE, 47754580140032, 47754580140032,
3268+STORE, 47754580140032, 47754581798911,
3269+STORE, 47754581798912, 47754581839871,
3270+STORE, 47754581483520, 47754581798911,
3271+STORE, 47754580140032, 47754581483519,
3272+ERASE, 47754580140032, 47754580140032,
3273+STORE, 47754580140032, 47754581483519,
3274+STORE, 47754581794816, 47754581798911,
3275+STORE, 47754581483520, 47754581794815,
3276+ERASE, 47754581483520, 47754581483520,
3277+STORE, 47754581483520, 47754581794815,
3278+STORE, 47754581823488, 47754581839871,
3279+STORE, 47754581798912, 47754581823487,
3280+ERASE, 47754581798912, 47754581798912,
3281+STORE, 47754581798912, 47754581823487,
3282+ERASE, 47754581823488, 47754581823488,
3283+STORE, 47754581823488, 47754581839871,
3284+STORE, 47754581823488, 47754581852159,
3285+ERASE, 47754581798912, 47754581798912,
3286+STORE, 47754581798912, 47754581815295,
3287+STORE, 47754581815296, 47754581823487,
3288+ERASE, 47754579984384, 47754579984384,
3289+STORE, 47754579984384, 47754579988479,
3290+STORE, 47754579988480, 47754579992575,
3291+ERASE, 94490667761664, 94490667761664,
3292+STORE, 94490667761664, 94490667778047,
3293+STORE, 94490667778048, 94490667782143,
3294+ERASE, 139878215278592, 139878215278592,
3295+STORE, 139878215278592, 139878215282687,
3296+STORE, 139878215282688, 139878215286783,
3297+ERASE, 47754579877888, 47754579877888,
3298+STORE, 94490669649920, 94490669785087,
3299+STORE, 140737488347136, 140737488351231,
3300+STORE, 140735382188032, 140737488351231,
3301+ERASE, 140735382188032, 140735382188032,
3302+STORE, 140735382188032, 140735382192127,
3303+STORE, 94150181302272, 94150182014975,
3304+ERASE, 94150181302272, 94150181302272,
3305+STORE, 94150181302272, 94150181351423,
3306+STORE, 94150181351424, 94150182014975,
3307+ERASE, 94150181351424, 94150181351424,
3308+STORE, 94150181351424, 94150181896191,
3309+STORE, 94150181896192, 94150181994495,
3310+STORE, 94150181994496, 94150182014975,
3311+STORE, 139679752458240, 139679752630271,
3312+ERASE, 139679752458240, 139679752458240,
3313+STORE, 139679752458240, 139679752462335,
3314+STORE, 139679752462336, 139679752630271,
3315+ERASE, 139679752462336, 139679752462336,
3316+STORE, 139679752462336, 139679752585215,
3317+STORE, 139679752585216, 139679752617983,
3318+STORE, 139679752617984, 139679752626175,
3319+STORE, 139679752626176, 139679752630271,
3320+STORE, 140735382536192, 140735382540287,
3321+STORE, 140735382523904, 140735382536191,
3322+STORE, 47953042538496, 47953042546687,
3323+STORE, 47953042546688, 47953042554879,
3324+STORE, 47953042554880, 47953042661375,
3325+STORE, 47953042571264, 47953042661375,
3326+STORE, 47953042554880, 47953042571263,
3327+ERASE, 47953042571264, 47953042571264,
3328+STORE, 47953042571264, 47953042644991,
3329+STORE, 47953042644992, 47953042661375,
3330+STORE, 47953042624512, 47953042644991,
3331+STORE, 47953042571264, 47953042624511,
3332+ERASE, 47953042571264, 47953042571264,
3333+STORE, 47953042571264, 47953042624511,
3334+STORE, 47953042640896, 47953042644991,
3335+STORE, 47953042624512, 47953042640895,
3336+ERASE, 47953042624512, 47953042624512,
3337+STORE, 47953042624512, 47953042640895,
3338+STORE, 47953042653184, 47953042661375,
3339+STORE, 47953042644992, 47953042653183,
3340+ERASE, 47953042644992, 47953042644992,
3341+STORE, 47953042644992, 47953042653183,
3342+ERASE, 47953042653184, 47953042653184,
3343+STORE, 47953042653184, 47953042661375,
3344+STORE, 47953042661376, 47953044500479,
3345+STORE, 47953042800640, 47953044500479,
3346+STORE, 47953042661376, 47953042800639,
3347+ERASE, 47953042800640, 47953042800640,
3348+STORE, 47953042800640, 47953044459519,
3349+STORE, 47953044459520, 47953044500479,
3350+STORE, 47953044144128, 47953044459519,
3351+STORE, 47953042800640, 47953044144127,
3352+ERASE, 47953042800640, 47953042800640,
3353+STORE, 47953042800640, 47953044144127,
3354+STORE, 47953044455424, 47953044459519,
3355+STORE, 47953044144128, 47953044455423,
3356+ERASE, 47953044144128, 47953044144128,
3357+STORE, 47953044144128, 47953044455423,
3358+STORE, 47953044484096, 47953044500479,
3359+STORE, 47953044459520, 47953044484095,
3360+ERASE, 47953044459520, 47953044459520,
3361+STORE, 47953044459520, 47953044484095,
3362+ERASE, 47953044484096, 47953044484096,
3363+STORE, 47953044484096, 47953044500479,
3364+STORE, 47953044484096, 47953044512767,
3365+ERASE, 47953044459520, 47953044459520,
3366+STORE, 47953044459520, 47953044475903,
3367+STORE, 47953044475904, 47953044484095,
3368+ERASE, 47953042644992, 47953042644992,
3369+STORE, 47953042644992, 47953042649087,
3370+STORE, 47953042649088, 47953042653183,
3371+ERASE, 94150181994496, 94150181994496,
3372+STORE, 94150181994496, 94150182010879,
3373+STORE, 94150182010880, 94150182014975,
3374+ERASE, 139679752617984, 139679752617984,
3375+STORE, 139679752617984, 139679752622079,
3376+STORE, 139679752622080, 139679752626175,
3377+ERASE, 47953042538496, 47953042538496,
3378+STORE, 140737488347136, 140737488351231,
3379+STORE, 140737044123648, 140737488351231,
3380+ERASE, 140737044123648, 140737044123648,
3381+STORE, 140737044123648, 140737044127743,
3382+STORE, 94425324294144, 94425325006847,
3383+ERASE, 94425324294144, 94425324294144,
3384+STORE, 94425324294144, 94425324343295,
3385+STORE, 94425324343296, 94425325006847,
3386+ERASE, 94425324343296, 94425324343296,
3387+STORE, 94425324343296, 94425324888063,
3388+STORE, 94425324888064, 94425324986367,
3389+STORE, 94425324986368, 94425325006847,
3390+STORE, 140382015016960, 140382015188991,
3391+ERASE, 140382015016960, 140382015016960,
3392+STORE, 140382015016960, 140382015021055,
3393+STORE, 140382015021056, 140382015188991,
3394+ERASE, 140382015021056, 140382015021056,
3395+STORE, 140382015021056, 140382015143935,
3396+STORE, 140382015143936, 140382015176703,
3397+STORE, 140382015176704, 140382015184895,
3398+STORE, 140382015184896, 140382015188991,
3399+STORE, 140737045585920, 140737045590015,
3400+STORE, 140737045573632, 140737045585919,
3401+STORE, 47250779979776, 47250779987967,
3402+STORE, 47250779987968, 47250779996159,
3403+STORE, 47250779996160, 47250780102655,
3404+STORE, 47250780012544, 47250780102655,
3405+STORE, 47250779996160, 47250780012543,
3406+ERASE, 47250780012544, 47250780012544,
3407+STORE, 47250780012544, 47250780086271,
3408+STORE, 47250780086272, 47250780102655,
3409+STORE, 47250780065792, 47250780086271,
3410+STORE, 47250780012544, 47250780065791,
3411+ERASE, 47250780012544, 47250780012544,
3412+STORE, 47250780012544, 47250780065791,
3413+STORE, 47250780082176, 47250780086271,
3414+STORE, 47250780065792, 47250780082175,
3415+ERASE, 47250780065792, 47250780065792,
3416+STORE, 47250780065792, 47250780082175,
3417+STORE, 47250780094464, 47250780102655,
3418+STORE, 47250780086272, 47250780094463,
3419+ERASE, 47250780086272, 47250780086272,
3420+STORE, 47250780086272, 47250780094463,
3421+ERASE, 47250780094464, 47250780094464,
3422+STORE, 47250780094464, 47250780102655,
3423+STORE, 47250780102656, 47250781941759,
3424+STORE, 47250780241920, 47250781941759,
3425+STORE, 47250780102656, 47250780241919,
3426+ERASE, 47250780241920, 47250780241920,
3427+STORE, 47250780241920, 47250781900799,
3428+STORE, 47250781900800, 47250781941759,
3429+STORE, 47250781585408, 47250781900799,
3430+STORE, 47250780241920, 47250781585407,
3431+ERASE, 47250780241920, 47250780241920,
3432+STORE, 47250780241920, 47250781585407,
3433+STORE, 47250781896704, 47250781900799,
3434+STORE, 47250781585408, 47250781896703,
3435+ERASE, 47250781585408, 47250781585408,
3436+STORE, 47250781585408, 47250781896703,
3437+STORE, 47250781925376, 47250781941759,
3438+STORE, 47250781900800, 47250781925375,
3439+ERASE, 47250781900800, 47250781900800,
3440+STORE, 47250781900800, 47250781925375,
3441+ERASE, 47250781925376, 47250781925376,
3442+STORE, 47250781925376, 47250781941759,
3443+STORE, 47250781925376, 47250781954047,
3444+ERASE, 47250781900800, 47250781900800,
3445+STORE, 47250781900800, 47250781917183,
3446+STORE, 47250781917184, 47250781925375,
3447+ERASE, 47250780086272, 47250780086272,
3448+STORE, 47250780086272, 47250780090367,
3449+STORE, 47250780090368, 47250780094463,
3450+ERASE, 94425324986368, 94425324986368,
3451+STORE, 94425324986368, 94425325002751,
3452+STORE, 94425325002752, 94425325006847,
3453+ERASE, 140382015176704, 140382015176704,
3454+STORE, 140382015176704, 140382015180799,
3455+STORE, 140382015180800, 140382015184895,
3456+ERASE, 47250779979776, 47250779979776,
3457+STORE, 94425351438336, 94425351573503,
3458+STORE, 140737488347136, 140737488351231,
3459+STORE, 140736801144832, 140737488351231,
3460+ERASE, 140736801144832, 140736801144832,
3461+STORE, 140736801144832, 140736801148927,
3462+STORE, 94629429358592, 94629430071295,
3463+ERASE, 94629429358592, 94629429358592,
3464+STORE, 94629429358592, 94629429407743,
3465+STORE, 94629429407744, 94629430071295,
3466+ERASE, 94629429407744, 94629429407744,
3467+STORE, 94629429407744, 94629429952511,
3468+STORE, 94629429952512, 94629430050815,
3469+STORE, 94629430050816, 94629430071295,
3470+STORE, 139801685483520, 139801685655551,
3471+ERASE, 139801685483520, 139801685483520,
3472+STORE, 139801685483520, 139801685487615,
3473+STORE, 139801685487616, 139801685655551,
3474+ERASE, 139801685487616, 139801685487616,
3475+STORE, 139801685487616, 139801685610495,
3476+STORE, 139801685610496, 139801685643263,
3477+STORE, 139801685643264, 139801685651455,
3478+STORE, 139801685651456, 139801685655551,
3479+STORE, 140736801198080, 140736801202175,
3480+STORE, 140736801185792, 140736801198079,
3481+STORE, 47831109513216, 47831109521407,
3482+STORE, 47831109521408, 47831109529599,
3483+STORE, 47831109529600, 47831109636095,
3484+STORE, 47831109545984, 47831109636095,
3485+STORE, 47831109529600, 47831109545983,
3486+ERASE, 47831109545984, 47831109545984,
3487+STORE, 47831109545984, 47831109619711,
3488+STORE, 47831109619712, 47831109636095,
3489+STORE, 47831109599232, 47831109619711,
3490+STORE, 47831109545984, 47831109599231,
3491+ERASE, 47831109545984, 47831109545984,
3492+STORE, 47831109545984, 47831109599231,
3493+STORE, 47831109615616, 47831109619711,
3494+STORE, 47831109599232, 47831109615615,
3495+ERASE, 47831109599232, 47831109599232,
3496+STORE, 47831109599232, 47831109615615,
3497+STORE, 47831109627904, 47831109636095,
3498+STORE, 47831109619712, 47831109627903,
3499+ERASE, 47831109619712, 47831109619712,
3500+STORE, 47831109619712, 47831109627903,
3501+ERASE, 47831109627904, 47831109627904,
3502+STORE, 47831109627904, 47831109636095,
3503+STORE, 47831109636096, 47831111475199,
3504+STORE, 47831109775360, 47831111475199,
3505+STORE, 47831109636096, 47831109775359,
3506+ERASE, 47831109775360, 47831109775360,
3507+STORE, 47831109775360, 47831111434239,
3508+STORE, 47831111434240, 47831111475199,
3509+STORE, 47831111118848, 47831111434239,
3510+STORE, 47831109775360, 47831111118847,
3511+ERASE, 47831109775360, 47831109775360,
3512+STORE, 47831109775360, 47831111118847,
3513+STORE, 47831111430144, 47831111434239,
3514+STORE, 47831111118848, 47831111430143,
3515+ERASE, 47831111118848, 47831111118848,
3516+STORE, 47831111118848, 47831111430143,
3517+STORE, 47831111458816, 47831111475199,
3518+STORE, 47831111434240, 47831111458815,
3519+ERASE, 47831111434240, 47831111434240,
3520+STORE, 47831111434240, 47831111458815,
3521+ERASE, 47831111458816, 47831111458816,
3522+STORE, 47831111458816, 47831111475199,
3523+STORE, 47831111458816, 47831111487487,
3524+ERASE, 47831111434240, 47831111434240,
3525+STORE, 47831111434240, 47831111450623,
3526+STORE, 47831111450624, 47831111458815,
3527+ERASE, 47831109619712, 47831109619712,
3528+STORE, 47831109619712, 47831109623807,
3529+STORE, 47831109623808, 47831109627903,
3530+ERASE, 94629430050816, 94629430050816,
3531+STORE, 94629430050816, 94629430067199,
3532+STORE, 94629430067200, 94629430071295,
3533+ERASE, 139801685643264, 139801685643264,
3534+STORE, 139801685643264, 139801685647359,
3535+STORE, 139801685647360, 139801685651455,
3536+ERASE, 47831109513216, 47831109513216,
3537+STORE, 140737488347136, 140737488351231,
3538+STORE, 140729419612160, 140737488351231,
3539+ERASE, 140729419612160, 140729419612160,
3540+STORE, 140729419612160, 140729419616255,
3541+STORE, 94443354148864, 94443354861567,
3542+ERASE, 94443354148864, 94443354148864,
3543+STORE, 94443354148864, 94443354198015,
3544+STORE, 94443354198016, 94443354861567,
3545+ERASE, 94443354198016, 94443354198016,
3546+STORE, 94443354198016, 94443354742783,
3547+STORE, 94443354742784, 94443354841087,
3548+STORE, 94443354841088, 94443354861567,
3549+STORE, 139741700038656, 139741700210687,
3550+ERASE, 139741700038656, 139741700038656,
3551+STORE, 139741700038656, 139741700042751,
3552+STORE, 139741700042752, 139741700210687,
3553+ERASE, 139741700042752, 139741700042752,
3554+STORE, 139741700042752, 139741700165631,
3555+STORE, 139741700165632, 139741700198399,
3556+STORE, 139741700198400, 139741700206591,
3557+STORE, 139741700206592, 139741700210687,
3558+STORE, 140729420574720, 140729420578815,
3559+STORE, 140729420562432, 140729420574719,
3560+STORE, 47891094958080, 47891094966271,
3561+STORE, 47891094966272, 47891094974463,
3562+STORE, 47891094974464, 47891095080959,
3563+STORE, 47891094990848, 47891095080959,
3564+STORE, 47891094974464, 47891094990847,
3565+ERASE, 47891094990848, 47891094990848,
3566+STORE, 47891094990848, 47891095064575,
3567+STORE, 47891095064576, 47891095080959,
3568+STORE, 47891095044096, 47891095064575,
3569+STORE, 47891094990848, 47891095044095,
3570+ERASE, 47891094990848, 47891094990848,
3571+STORE, 47891094990848, 47891095044095,
3572+STORE, 47891095060480, 47891095064575,
3573+STORE, 47891095044096, 47891095060479,
3574+ERASE, 47891095044096, 47891095044096,
3575+STORE, 47891095044096, 47891095060479,
3576+STORE, 47891095072768, 47891095080959,
3577+STORE, 47891095064576, 47891095072767,
3578+ERASE, 47891095064576, 47891095064576,
3579+STORE, 47891095064576, 47891095072767,
3580+ERASE, 47891095072768, 47891095072768,
3581+STORE, 47891095072768, 47891095080959,
3582+STORE, 47891095080960, 47891096920063,
3583+STORE, 47891095220224, 47891096920063,
3584+STORE, 47891095080960, 47891095220223,
3585+ERASE, 47891095220224, 47891095220224,
3586+STORE, 47891095220224, 47891096879103,
3587+STORE, 47891096879104, 47891096920063,
3588+STORE, 47891096563712, 47891096879103,
3589+STORE, 47891095220224, 47891096563711,
3590+ERASE, 47891095220224, 47891095220224,
3591+STORE, 47891095220224, 47891096563711,
3592+STORE, 47891096875008, 47891096879103,
3593+STORE, 47891096563712, 47891096875007,
3594+ERASE, 47891096563712, 47891096563712,
3595+STORE, 47891096563712, 47891096875007,
3596+STORE, 47891096903680, 47891096920063,
3597+STORE, 47891096879104, 47891096903679,
3598+ERASE, 47891096879104, 47891096879104,
3599+STORE, 47891096879104, 47891096903679,
3600+ERASE, 47891096903680, 47891096903680,
3601+STORE, 47891096903680, 47891096920063,
3602+STORE, 47891096903680, 47891096932351,
3603+ERASE, 47891096879104, 47891096879104,
3604+STORE, 47891096879104, 47891096895487,
3605+STORE, 47891096895488, 47891096903679,
3606+ERASE, 47891095064576, 47891095064576,
3607+STORE, 47891095064576, 47891095068671,
3608+STORE, 47891095068672, 47891095072767,
3609+ERASE, 94443354841088, 94443354841088,
3610+STORE, 94443354841088, 94443354857471,
3611+STORE, 94443354857472, 94443354861567,
3612+ERASE, 139741700198400, 139741700198400,
3613+STORE, 139741700198400, 139741700202495,
3614+STORE, 139741700202496, 139741700206591,
3615+ERASE, 47891094958080, 47891094958080,
3616+STORE, 94443360825344, 94443360960511,
3617+STORE, 140737488347136, 140737488351231,
3618+STORE, 140722961661952, 140737488351231,
3619+ERASE, 140722961661952, 140722961661952,
3620+STORE, 140722961661952, 140722961666047,
3621+STORE, 94878388944896, 94878389657599,
3622+ERASE, 94878388944896, 94878388944896,
3623+STORE, 94878388944896, 94878388994047,
3624+STORE, 94878388994048, 94878389657599,
3625+ERASE, 94878388994048, 94878388994048,
3626+STORE, 94878388994048, 94878389538815,
3627+STORE, 94878389538816, 94878389637119,
3628+STORE, 94878389637120, 94878389657599,
3629+STORE, 140210690056192, 140210690228223,
3630+ERASE, 140210690056192, 140210690056192,
3631+STORE, 140210690056192, 140210690060287,
3632+STORE, 140210690060288, 140210690228223,
3633+ERASE, 140210690060288, 140210690060288,
3634+STORE, 140210690060288, 140210690183167,
3635+STORE, 140210690183168, 140210690215935,
3636+STORE, 140210690215936, 140210690224127,
3637+STORE, 140210690224128, 140210690228223,
3638+STORE, 140722963148800, 140722963152895,
3639+STORE, 140722963136512, 140722963148799,
3640+STORE, 47422104940544, 47422104948735,
3641+STORE, 47422104948736, 47422104956927,
3642+STORE, 47422104956928, 47422105063423,
3643+STORE, 47422104973312, 47422105063423,
3644+STORE, 47422104956928, 47422104973311,
3645+ERASE, 47422104973312, 47422104973312,
3646+STORE, 47422104973312, 47422105047039,
3647+STORE, 47422105047040, 47422105063423,
3648+STORE, 47422105026560, 47422105047039,
3649+STORE, 47422104973312, 47422105026559,
3650+ERASE, 47422104973312, 47422104973312,
3651+STORE, 47422104973312, 47422105026559,
3652+STORE, 47422105042944, 47422105047039,
3653+STORE, 47422105026560, 47422105042943,
3654+ERASE, 47422105026560, 47422105026560,
3655+STORE, 47422105026560, 47422105042943,
3656+STORE, 47422105055232, 47422105063423,
3657+STORE, 47422105047040, 47422105055231,
3658+ERASE, 47422105047040, 47422105047040,
3659+STORE, 47422105047040, 47422105055231,
3660+ERASE, 47422105055232, 47422105055232,
3661+STORE, 47422105055232, 47422105063423,
3662+STORE, 47422105063424, 47422106902527,
3663+STORE, 47422105202688, 47422106902527,
3664+STORE, 47422105063424, 47422105202687,
3665+ERASE, 47422105202688, 47422105202688,
3666+STORE, 47422105202688, 47422106861567,
3667+STORE, 47422106861568, 47422106902527,
3668+STORE, 47422106546176, 47422106861567,
3669+STORE, 47422105202688, 47422106546175,
3670+ERASE, 47422105202688, 47422105202688,
3671+STORE, 47422105202688, 47422106546175,
3672+STORE, 47422106857472, 47422106861567,
3673+STORE, 47422106546176, 47422106857471,
3674+ERASE, 47422106546176, 47422106546176,
3675+STORE, 47422106546176, 47422106857471,
3676+STORE, 47422106886144, 47422106902527,
3677+STORE, 47422106861568, 47422106886143,
3678+ERASE, 47422106861568, 47422106861568,
3679+STORE, 47422106861568, 47422106886143,
3680+ERASE, 47422106886144, 47422106886144,
3681+STORE, 47422106886144, 47422106902527,
3682+STORE, 47422106886144, 47422106914815,
3683+ERASE, 47422106861568, 47422106861568,
3684+STORE, 47422106861568, 47422106877951,
3685+STORE, 47422106877952, 47422106886143,
3686+ERASE, 47422105047040, 47422105047040,
3687+STORE, 47422105047040, 47422105051135,
3688+STORE, 47422105051136, 47422105055231,
3689+ERASE, 94878389637120, 94878389637120,
3690+STORE, 94878389637120, 94878389653503,
3691+STORE, 94878389653504, 94878389657599,
3692+ERASE, 140210690215936, 140210690215936,
3693+STORE, 140210690215936, 140210690220031,
3694+STORE, 140210690220032, 140210690224127,
3695+ERASE, 47422104940544, 47422104940544,
3696+STORE, 140737488347136, 140737488351231,
3697+STORE, 140727690309632, 140737488351231,
3698+ERASE, 140727690309632, 140727690309632,
3699+STORE, 140727690309632, 140727690313727,
3700+STORE, 94121892208640, 94121892921343,
3701+ERASE, 94121892208640, 94121892208640,
3702+STORE, 94121892208640, 94121892257791,
3703+STORE, 94121892257792, 94121892921343,
3704+ERASE, 94121892257792, 94121892257792,
3705+STORE, 94121892257792, 94121892802559,
3706+STORE, 94121892802560, 94121892900863,
3707+STORE, 94121892900864, 94121892921343,
3708+STORE, 140662438326272, 140662438498303,
3709+ERASE, 140662438326272, 140662438326272,
3710+STORE, 140662438326272, 140662438330367,
3711+STORE, 140662438330368, 140662438498303,
3712+ERASE, 140662438330368, 140662438330368,
3713+STORE, 140662438330368, 140662438453247,
3714+STORE, 140662438453248, 140662438486015,
3715+STORE, 140662438486016, 140662438494207,
3716+STORE, 140662438494208, 140662438498303,
3717+STORE, 140727690379264, 140727690383359,
3718+STORE, 140727690366976, 140727690379263,
3719+STORE, 46970356670464, 46970356678655,
3720+STORE, 46970356678656, 46970356686847,
3721+STORE, 46970356686848, 46970356793343,
3722+STORE, 46970356703232, 46970356793343,
3723+STORE, 46970356686848, 46970356703231,
3724+ERASE, 46970356703232, 46970356703232,
3725+STORE, 46970356703232, 46970356776959,
3726+STORE, 46970356776960, 46970356793343,
3727+STORE, 46970356756480, 46970356776959,
3728+STORE, 46970356703232, 46970356756479,
3729+ERASE, 46970356703232, 46970356703232,
3730+STORE, 46970356703232, 46970356756479,
3731+STORE, 46970356772864, 46970356776959,
3732+STORE, 46970356756480, 46970356772863,
3733+ERASE, 46970356756480, 46970356756480,
3734+STORE, 46970356756480, 46970356772863,
3735+STORE, 46970356785152, 46970356793343,
3736+STORE, 46970356776960, 46970356785151,
3737+ERASE, 46970356776960, 46970356776960,
3738+STORE, 46970356776960, 46970356785151,
3739+ERASE, 46970356785152, 46970356785152,
3740+STORE, 46970356785152, 46970356793343,
3741+STORE, 46970356793344, 46970358632447,
3742+STORE, 46970356932608, 46970358632447,
3743+STORE, 46970356793344, 46970356932607,
3744+ERASE, 46970356932608, 46970356932608,
3745+STORE, 46970356932608, 46970358591487,
3746+STORE, 46970358591488, 46970358632447,
3747+STORE, 46970358276096, 46970358591487,
3748+STORE, 46970356932608, 46970358276095,
3749+ERASE, 46970356932608, 46970356932608,
3750+STORE, 46970356932608, 46970358276095,
3751+STORE, 46970358587392, 46970358591487,
3752+STORE, 46970358276096, 46970358587391,
3753+ERASE, 46970358276096, 46970358276096,
3754+STORE, 46970358276096, 46970358587391,
3755+STORE, 46970358616064, 46970358632447,
3756+STORE, 46970358591488, 46970358616063,
3757+ERASE, 46970358591488, 46970358591488,
3758+STORE, 46970358591488, 46970358616063,
3759+ERASE, 46970358616064, 46970358616064,
3760+STORE, 46970358616064, 46970358632447,
3761+STORE, 46970358616064, 46970358644735,
3762+ERASE, 46970358591488, 46970358591488,
3763+STORE, 46970358591488, 46970358607871,
3764+STORE, 46970358607872, 46970358616063,
3765+ERASE, 46970356776960, 46970356776960,
3766+STORE, 46970356776960, 46970356781055,
3767+STORE, 46970356781056, 46970356785151,
3768+ERASE, 94121892900864, 94121892900864,
3769+STORE, 94121892900864, 94121892917247,
3770+STORE, 94121892917248, 94121892921343,
3771+ERASE, 140662438486016, 140662438486016,
3772+STORE, 140662438486016, 140662438490111,
3773+STORE, 140662438490112, 140662438494207,
3774+ERASE, 46970356670464, 46970356670464,
3775+STORE, 94121898610688, 94121898745855,
3776+STORE, 140737488347136, 140737488351231,
3777+STORE, 140737189351424, 140737488351231,
3778+ERASE, 140737189351424, 140737189351424,
3779+STORE, 140737189351424, 140737189355519,
3780+STORE, 93847948832768, 93847949545471,
3781+ERASE, 93847948832768, 93847948832768,
3782+STORE, 93847948832768, 93847948881919,
3783+STORE, 93847948881920, 93847949545471,
3784+ERASE, 93847948881920, 93847948881920,
3785+STORE, 93847948881920, 93847949426687,
3786+STORE, 93847949426688, 93847949524991,
3787+STORE, 93847949524992, 93847949545471,
3788+STORE, 139698989985792, 139698990157823,
3789+ERASE, 139698989985792, 139698989985792,
3790+STORE, 139698989985792, 139698989989887,
3791+STORE, 139698989989888, 139698990157823,
3792+ERASE, 139698989989888, 139698989989888,
3793+STORE, 139698989989888, 139698990112767,
3794+STORE, 139698990112768, 139698990145535,
3795+STORE, 139698990145536, 139698990153727,
3796+STORE, 139698990153728, 139698990157823,
3797+STORE, 140737189744640, 140737189748735,
3798+STORE, 140737189732352, 140737189744639,
3799+STORE, 47933805010944, 47933805019135,
3800+STORE, 47933805019136, 47933805027327,
3801+STORE, 47933805027328, 47933805133823,
3802+STORE, 47933805043712, 47933805133823,
3803+STORE, 47933805027328, 47933805043711,
3804+ERASE, 47933805043712, 47933805043712,
3805+STORE, 47933805043712, 47933805117439,
3806+STORE, 47933805117440, 47933805133823,
3807+STORE, 47933805096960, 47933805117439,
3808+STORE, 47933805043712, 47933805096959,
3809+ERASE, 47933805043712, 47933805043712,
3810+STORE, 47933805043712, 47933805096959,
3811+STORE, 47933805113344, 47933805117439,
3812+STORE, 47933805096960, 47933805113343,
3813+ERASE, 47933805096960, 47933805096960,
3814+STORE, 47933805096960, 47933805113343,
3815+STORE, 47933805125632, 47933805133823,
3816+STORE, 47933805117440, 47933805125631,
3817+ERASE, 47933805117440, 47933805117440,
3818+STORE, 47933805117440, 47933805125631,
3819+ERASE, 47933805125632, 47933805125632,
3820+STORE, 47933805125632, 47933805133823,
3821+STORE, 47933805133824, 47933806972927,
3822+STORE, 47933805273088, 47933806972927,
3823+STORE, 47933805133824, 47933805273087,
3824+ERASE, 47933805273088, 47933805273088,
3825+STORE, 47933805273088, 47933806931967,
3826+STORE, 47933806931968, 47933806972927,
3827+STORE, 47933806616576, 47933806931967,
3828+STORE, 47933805273088, 47933806616575,
3829+ERASE, 47933805273088, 47933805273088,
3830+STORE, 47933805273088, 47933806616575,
3831+STORE, 47933806927872, 47933806931967,
3832+STORE, 47933806616576, 47933806927871,
3833+ERASE, 47933806616576, 47933806616576,
3834+STORE, 47933806616576, 47933806927871,
3835+STORE, 47933806956544, 47933806972927,
3836+STORE, 47933806931968, 47933806956543,
3837+ERASE, 47933806931968, 47933806931968,
3838+STORE, 47933806931968, 47933806956543,
3839+ERASE, 47933806956544, 47933806956544,
3840+STORE, 47933806956544, 47933806972927,
3841+STORE, 47933806956544, 47933806985215,
3842+ERASE, 47933806931968, 47933806931968,
3843+STORE, 47933806931968, 47933806948351,
3844+STORE, 47933806948352, 47933806956543,
3845+ERASE, 47933805117440, 47933805117440,
3846+STORE, 47933805117440, 47933805121535,
3847+STORE, 47933805121536, 47933805125631,
3848+ERASE, 93847949524992, 93847949524992,
3849+STORE, 93847949524992, 93847949541375,
3850+STORE, 93847949541376, 93847949545471,
3851+ERASE, 139698990145536, 139698990145536,
3852+STORE, 139698990145536, 139698990149631,
3853+STORE, 139698990149632, 139698990153727,
3854+ERASE, 47933805010944, 47933805010944,
3855+STORE, 140737488347136, 140737488351231,
3856+STORE, 140725553991680, 140737488351231,
3857+ERASE, 140725553991680, 140725553991680,
3858+STORE, 140725553991680, 140725553995775,
3859+STORE, 93980056248320, 93980056961023,
3860+ERASE, 93980056248320, 93980056248320,
3861+STORE, 93980056248320, 93980056297471,
3862+STORE, 93980056297472, 93980056961023,
3863+ERASE, 93980056297472, 93980056297472,
3864+STORE, 93980056297472, 93980056842239,
3865+STORE, 93980056842240, 93980056940543,
3866+STORE, 93980056940544, 93980056961023,
3867+STORE, 140146588971008, 140146589143039,
3868+ERASE, 140146588971008, 140146588971008,
3869+STORE, 140146588971008, 140146588975103,
3870+STORE, 140146588975104, 140146589143039,
3871+ERASE, 140146588975104, 140146588975104,
3872+STORE, 140146588975104, 140146589097983,
3873+STORE, 140146589097984, 140146589130751,
3874+STORE, 140146589130752, 140146589138943,
3875+STORE, 140146589138944, 140146589143039,
3876+STORE, 140725554860032, 140725554864127,
3877+STORE, 140725554847744, 140725554860031,
3878+STORE, 47486206025728, 47486206033919,
3879+STORE, 47486206033920, 47486206042111,
3880+STORE, 47486206042112, 47486206148607,
3881+STORE, 47486206058496, 47486206148607,
3882+STORE, 47486206042112, 47486206058495,
3883+ERASE, 47486206058496, 47486206058496,
3884+STORE, 47486206058496, 47486206132223,
3885+STORE, 47486206132224, 47486206148607,
3886+STORE, 47486206111744, 47486206132223,
3887+STORE, 47486206058496, 47486206111743,
3888+ERASE, 47486206058496, 47486206058496,
3889+STORE, 47486206058496, 47486206111743,
3890+STORE, 47486206128128, 47486206132223,
3891+STORE, 47486206111744, 47486206128127,
3892+ERASE, 47486206111744, 47486206111744,
3893+STORE, 47486206111744, 47486206128127,
3894+STORE, 47486206140416, 47486206148607,
3895+STORE, 47486206132224, 47486206140415,
3896+ERASE, 47486206132224, 47486206132224,
3897+STORE, 47486206132224, 47486206140415,
3898+ERASE, 47486206140416, 47486206140416,
3899+STORE, 47486206140416, 47486206148607,
3900+STORE, 47486206148608, 47486207987711,
3901+STORE, 47486206287872, 47486207987711,
3902+STORE, 47486206148608, 47486206287871,
3903+ERASE, 47486206287872, 47486206287872,
3904+STORE, 47486206287872, 47486207946751,
3905+STORE, 47486207946752, 47486207987711,
3906+STORE, 47486207631360, 47486207946751,
3907+STORE, 47486206287872, 47486207631359,
3908+ERASE, 47486206287872, 47486206287872,
3909+STORE, 47486206287872, 47486207631359,
3910+STORE, 47486207942656, 47486207946751,
3911+STORE, 47486207631360, 47486207942655,
3912+ERASE, 47486207631360, 47486207631360,
3913+STORE, 47486207631360, 47486207942655,
3914+STORE, 47486207971328, 47486207987711,
3915+STORE, 47486207946752, 47486207971327,
3916+ERASE, 47486207946752, 47486207946752,
3917+STORE, 47486207946752, 47486207971327,
3918+ERASE, 47486207971328, 47486207971328,
3919+STORE, 47486207971328, 47486207987711,
3920+STORE, 47486207971328, 47486207999999,
3921+ERASE, 47486207946752, 47486207946752,
3922+STORE, 47486207946752, 47486207963135,
3923+STORE, 47486207963136, 47486207971327,
3924+ERASE, 47486206132224, 47486206132224,
3925+STORE, 47486206132224, 47486206136319,
3926+STORE, 47486206136320, 47486206140415,
3927+ERASE, 93980056940544, 93980056940544,
3928+STORE, 93980056940544, 93980056956927,
3929+STORE, 93980056956928, 93980056961023,
3930+ERASE, 140146589130752, 140146589130752,
3931+STORE, 140146589130752, 140146589134847,
3932+STORE, 140146589134848, 140146589138943,
3933+ERASE, 47486206025728, 47486206025728,
3934+STORE, 93980070006784, 93980070141951,
3935+STORE, 140737488347136, 140737488351231,
3936+STORE, 140727334776832, 140737488351231,
3937+ERASE, 140727334776832, 140727334776832,
3938+STORE, 140727334776832, 140727334780927,
3939+STORE, 94049747247104, 94049747959807,
3940+ERASE, 94049747247104, 94049747247104,
3941+STORE, 94049747247104, 94049747296255,
3942+STORE, 94049747296256, 94049747959807,
3943+ERASE, 94049747296256, 94049747296256,
3944+STORE, 94049747296256, 94049747841023,
3945+STORE, 94049747841024, 94049747939327,
3946+STORE, 94049747939328, 94049747959807,
3947+STORE, 140227307216896, 140227307388927,
3948+ERASE, 140227307216896, 140227307216896,
3949+STORE, 140227307216896, 140227307220991,
3950+STORE, 140227307220992, 140227307388927,
3951+ERASE, 140227307220992, 140227307220992,
3952+STORE, 140227307220992, 140227307343871,
3953+STORE, 140227307343872, 140227307376639,
3954+STORE, 140227307376640, 140227307384831,
3955+STORE, 140227307384832, 140227307388927,
3956+STORE, 140727335337984, 140727335342079,
3957+STORE, 140727335325696, 140727335337983,
3958+STORE, 47405487779840, 47405487788031,
3959+STORE, 47405487788032, 47405487796223,
3960+STORE, 47405487796224, 47405487902719,
3961+STORE, 47405487812608, 47405487902719,
3962+STORE, 47405487796224, 47405487812607,
3963+ERASE, 47405487812608, 47405487812608,
3964+STORE, 47405487812608, 47405487886335,
3965+STORE, 47405487886336, 47405487902719,
3966+STORE, 47405487865856, 47405487886335,
3967+STORE, 47405487812608, 47405487865855,
3968+ERASE, 47405487812608, 47405487812608,
3969+STORE, 47405487812608, 47405487865855,
3970+STORE, 47405487882240, 47405487886335,
3971+STORE, 47405487865856, 47405487882239,
3972+ERASE, 47405487865856, 47405487865856,
3973+STORE, 47405487865856, 47405487882239,
3974+STORE, 47405487894528, 47405487902719,
3975+STORE, 47405487886336, 47405487894527,
3976+ERASE, 47405487886336, 47405487886336,
3977+STORE, 47405487886336, 47405487894527,
3978+ERASE, 47405487894528, 47405487894528,
3979+STORE, 47405487894528, 47405487902719,
3980+STORE, 47405487902720, 47405489741823,
3981+STORE, 47405488041984, 47405489741823,
3982+STORE, 47405487902720, 47405488041983,
3983+ERASE, 47405488041984, 47405488041984,
3984+STORE, 47405488041984, 47405489700863,
3985+STORE, 47405489700864, 47405489741823,
3986+STORE, 47405489385472, 47405489700863,
3987+STORE, 47405488041984, 47405489385471,
3988+ERASE, 47405488041984, 47405488041984,
3989+STORE, 47405488041984, 47405489385471,
3990+STORE, 47405489696768, 47405489700863,
3991+STORE, 47405489385472, 47405489696767,
3992+ERASE, 47405489385472, 47405489385472,
3993+STORE, 47405489385472, 47405489696767,
3994+STORE, 47405489725440, 47405489741823,
3995+STORE, 47405489700864, 47405489725439,
3996+ERASE, 47405489700864, 47405489700864,
3997+STORE, 47405489700864, 47405489725439,
3998+ERASE, 47405489725440, 47405489725440,
3999+STORE, 47405489725440, 47405489741823,
4000+STORE, 47405489725440, 47405489754111,
4001+ERASE, 47405489700864, 47405489700864,
4002+STORE, 47405489700864, 47405489717247,
4003+STORE, 47405489717248, 47405489725439,
4004+ERASE, 47405487886336, 47405487886336,
4005+STORE, 47405487886336, 47405487890431,
4006+STORE, 47405487890432, 47405487894527,
4007+ERASE, 94049747939328, 94049747939328,
4008+STORE, 94049747939328, 94049747955711,
4009+STORE, 94049747955712, 94049747959807,
4010+ERASE, 140227307376640, 140227307376640,
4011+STORE, 140227307376640, 140227307380735,
4012+STORE, 140227307380736, 140227307384831,
4013+ERASE, 47405487779840, 47405487779840,
4014+STORE, 94049758810112, 94049758945279,
4015+STORE, 140737488347136, 140737488351231,
4016+STORE, 140727079718912, 140737488351231,
4017+ERASE, 140727079718912, 140727079718912,
4018+STORE, 140727079718912, 140727079723007,
4019+STORE, 94250996527104, 94250997239807,
4020+ERASE, 94250996527104, 94250996527104,
4021+STORE, 94250996527104, 94250996576255,
4022+STORE, 94250996576256, 94250997239807,
4023+ERASE, 94250996576256, 94250996576256,
4024+STORE, 94250996576256, 94250997121023,
4025+STORE, 94250997121024, 94250997219327,
4026+STORE, 94250997219328, 94250997239807,
4027+STORE, 140060022587392, 140060022759423,
4028+ERASE, 140060022587392, 140060022587392,
4029+STORE, 140060022587392, 140060022591487,
4030+STORE, 140060022591488, 140060022759423,
4031+ERASE, 140060022591488, 140060022591488,
4032+STORE, 140060022591488, 140060022714367,
4033+STORE, 140060022714368, 140060022747135,
4034+STORE, 140060022747136, 140060022755327,
4035+STORE, 140060022755328, 140060022759423,
4036+STORE, 140727079788544, 140727079792639,
4037+STORE, 140727079776256, 140727079788543,
4038+/* this next one caused issues when lowering the efficiency */
4039+STORE, 47572772409344, 47572772417535,
4040+STORE, 47572772417536, 47572772425727,
4041+STORE, 47572772425728, 47572772532223,
4042+STORE, 47572772442112, 47572772532223,
4043+STORE, 47572772425728, 47572772442111,
4044+ERASE, 47572772442112, 47572772442112,
4045+STORE, 47572772442112, 47572772515839,
4046+STORE, 47572772515840, 47572772532223,
4047+STORE, 47572772495360, 47572772515839,
4048+STORE, 47572772442112, 47572772495359,
4049+ERASE, 47572772442112, 47572772442112,
4050+STORE, 47572772442112, 47572772495359,
4051+STORE, 47572772511744, 47572772515839,
4052+STORE, 47572772495360, 47572772511743,
4053+ERASE, 47572772495360, 47572772495360,
4054+STORE, 47572772495360, 47572772511743,
4055+STORE, 47572772524032, 47572772532223,
4056+STORE, 47572772515840, 47572772524031,
4057+ERASE, 47572772515840, 47572772515840,
4058+STORE, 47572772515840, 47572772524031,
4059+ERASE, 47572772524032, 47572772524032,
4060+STORE, 47572772524032, 47572772532223,
4061+STORE, 47572772532224, 47572774371327,
4062+STORE, 47572772671488, 47572774371327,
4063+STORE, 47572772532224, 47572772671487,
4064+ERASE, 47572772671488, 47572772671488,
4065+STORE, 47572772671488, 47572774330367,
4066+STORE, 47572774330368, 47572774371327,
4067+STORE, 47572774014976, 47572774330367,
4068+STORE, 47572772671488, 47572774014975,
4069+ERASE, 47572772671488, 47572772671488,
4070+STORE, 47572772671488, 47572774014975,
4071+STORE, 47572774326272, 47572774330367,
4072+STORE, 47572774014976, 47572774326271,
4073+ERASE, 47572774014976, 47572774014976,
4074+STORE, 47572774014976, 47572774326271,
4075+STORE, 47572774354944, 47572774371327,
4076+STORE, 47572774330368, 47572774354943,
4077+ERASE, 47572774330368, 47572774330368,
4078+STORE, 47572774330368, 47572774354943,
4079+ERASE, 47572774354944, 47572774354944,
4080+STORE, 47572774354944, 47572774371327,
4081+STORE, 47572774354944, 47572774383615,
4082+ERASE, 47572774330368, 47572774330368,
4083+STORE, 47572774330368, 47572774346751,
4084+STORE, 47572774346752, 47572774354943,
4085+ERASE, 47572772515840, 47572772515840,
4086+STORE, 47572772515840, 47572772519935,
4087+STORE, 47572772519936, 47572772524031,
4088+ERASE, 94250997219328, 94250997219328,
4089+STORE, 94250997219328, 94250997235711,
4090+STORE, 94250997235712, 94250997239807,
4091+ERASE, 140060022747136, 140060022747136,
4092+STORE, 140060022747136, 140060022751231,
4093+STORE, 140060022751232, 140060022755327,
4094+ERASE, 47572772409344, 47572772409344,
4095+STORE, 94251018305536, 94251018440703,
4096+STORE, 140737488347136, 140737488351231,
4097+STORE, 140730012389376, 140737488351231,
4098+ERASE, 140730012389376, 140730012389376,
4099+STORE, 140730012389376, 140730012393471,
4100+STORE, 94382607675392, 94382607695871,
4101+ERASE, 94382607675392, 94382607675392,
4102+STORE, 94382607675392, 94382607679487,
4103+STORE, 94382607679488, 94382607695871,
4104+ERASE, 94382607679488, 94382607679488,
4105+STORE, 94382607679488, 94382607683583,
4106+STORE, 94382607683584, 94382607687679,
4107+STORE, 94382607687680, 94382607695871,
4108+STORE, 140252451454976, 140252451627007,
4109+ERASE, 140252451454976, 140252451454976,
4110+STORE, 140252451454976, 140252451459071,
4111+STORE, 140252451459072, 140252451627007,
4112+ERASE, 140252451459072, 140252451459072,
4113+STORE, 140252451459072, 140252451581951,
4114+STORE, 140252451581952, 140252451614719,
4115+STORE, 140252451614720, 140252451622911,
4116+STORE, 140252451622912, 140252451627007,
4117+STORE, 140730013548544, 140730013552639,
4118+STORE, 140730013536256, 140730013548543,
4119+STORE, 47380343541760, 47380343549951,
4120+STORE, 47380343549952, 47380343558143,
4121+STORE, 47380343558144, 47380345397247,
4122+STORE, 47380343697408, 47380345397247,
4123+STORE, 47380343558144, 47380343697407,
4124+ERASE, 47380343697408, 47380343697408,
4125+STORE, 47380343697408, 47380345356287,
4126+STORE, 47380345356288, 47380345397247,
4127+STORE, 47380345040896, 47380345356287,
4128+STORE, 47380343697408, 47380345040895,
4129+ERASE, 47380343697408, 47380343697408,
4130+STORE, 47380343697408, 47380345040895,
4131+STORE, 47380345352192, 47380345356287,
4132+STORE, 47380345040896, 47380345352191,
4133+ERASE, 47380345040896, 47380345040896,
4134+STORE, 47380345040896, 47380345352191,
4135+STORE, 47380345380864, 47380345397247,
4136+STORE, 47380345356288, 47380345380863,
4137+ERASE, 47380345356288, 47380345356288,
4138+STORE, 47380345356288, 47380345380863,
4139+ERASE, 47380345380864, 47380345380864,
4140+STORE, 47380345380864, 47380345397247,
4141+ERASE, 47380345356288, 47380345356288,
4142+STORE, 47380345356288, 47380345372671,
4143+STORE, 47380345372672, 47380345380863,
4144+ERASE, 94382607687680, 94382607687680,
4145+STORE, 94382607687680, 94382607691775,
4146+STORE, 94382607691776, 94382607695871,
4147+ERASE, 140252451614720, 140252451614720,
4148+STORE, 140252451614720, 140252451618815,
4149+STORE, 140252451618816, 140252451622911,
4150+ERASE, 47380343541760, 47380343541760,
4151+STORE, 94382626803712, 94382626938879,
4152+STORE, 140737488347136, 140737488351231,
4153+STORE, 140730900271104, 140737488351231,
4154+ERASE, 140730900271104, 140730900271104,
4155+STORE, 140730900271104, 140730900275199,
4156+STORE, 93855478120448, 93855478337535,
4157+ERASE, 93855478120448, 93855478120448,
4158+STORE, 93855478120448, 93855478198271,
4159+STORE, 93855478198272, 93855478337535,
4160+ERASE, 93855478198272, 93855478198272,
4161+STORE, 93855478198272, 93855478243327,
4162+STORE, 93855478243328, 93855478288383,
4163+STORE, 93855478288384, 93855478337535,
4164+STORE, 140092686573568, 140092686745599,
4165+ERASE, 140092686573568, 140092686573568,
4166+STORE, 140092686573568, 140092686577663,
4167+STORE, 140092686577664, 140092686745599,
4168+ERASE, 140092686577664, 140092686577664,
4169+STORE, 140092686577664, 140092686700543,
4170+STORE, 140092686700544, 140092686733311,
4171+STORE, 140092686733312, 140092686741503,
4172+STORE, 140092686741504, 140092686745599,
4173+STORE, 140730900537344, 140730900541439,
4174+STORE, 140730900525056, 140730900537343,
4175+STORE, 47540108423168, 47540108431359,
4176+STORE, 47540108431360, 47540108439551,
4177+STORE, 47540108439552, 47540110278655,
4178+STORE, 47540108578816, 47540110278655,
4179+STORE, 47540108439552, 47540108578815,
4180+ERASE, 47540108578816, 47540108578816,
4181+STORE, 47540108578816, 47540110237695,
4182+STORE, 47540110237696, 47540110278655,
4183+STORE, 47540109922304, 47540110237695,
4184+STORE, 47540108578816, 47540109922303,
4185+ERASE, 47540108578816, 47540108578816,
4186+STORE, 47540108578816, 47540109922303,
4187+STORE, 47540110233600, 47540110237695,
4188+STORE, 47540109922304, 47540110233599,
4189+ERASE, 47540109922304, 47540109922304,
4190+STORE, 47540109922304, 47540110233599,
4191+STORE, 47540110262272, 47540110278655,
4192+STORE, 47540110237696, 47540110262271,
4193+ERASE, 47540110237696, 47540110237696,
4194+STORE, 47540110237696, 47540110262271,
4195+ERASE, 47540110262272, 47540110262272,
4196+STORE, 47540110262272, 47540110278655,
4197+ERASE, 47540110237696, 47540110237696,
4198+STORE, 47540110237696, 47540110254079,
4199+STORE, 47540110254080, 47540110262271,
4200+ERASE, 93855478288384, 93855478288384,
4201+STORE, 93855478288384, 93855478333439,
4202+STORE, 93855478333440, 93855478337535,
4203+ERASE, 140092686733312, 140092686733312,
4204+STORE, 140092686733312, 140092686737407,
4205+STORE, 140092686737408, 140092686741503,
4206+ERASE, 47540108423168, 47540108423168,
4207+STORE, 93855492222976, 93855492358143,
4208+STORE, 93855492222976, 93855492493311,
4209+STORE, 140737488347136, 140737488351231,
4210+STORE, 140733498146816, 140737488351231,
4211+ERASE, 140733498146816, 140733498146816,
4212+STORE, 140733498146816, 140733498150911,
4213+STORE, 94170739654656, 94170740367359,
4214+ERASE, 94170739654656, 94170739654656,
4215+STORE, 94170739654656, 94170739703807,
4216+STORE, 94170739703808, 94170740367359,
4217+ERASE, 94170739703808, 94170739703808,
4218+STORE, 94170739703808, 94170740248575,
4219+STORE, 94170740248576, 94170740346879,
4220+STORE, 94170740346880, 94170740367359,
4221+STORE, 140024788877312, 140024789049343,
4222+ERASE, 140024788877312, 140024788877312,
4223+STORE, 140024788877312, 140024788881407,
4224+STORE, 140024788881408, 140024789049343,
4225+ERASE, 140024788881408, 140024788881408,
4226+STORE, 140024788881408, 140024789004287,
4227+STORE, 140024789004288, 140024789037055,
4228+STORE, 140024789037056, 140024789045247,
4229+STORE, 140024789045248, 140024789049343,
4230+STORE, 140733499023360, 140733499027455,
4231+STORE, 140733499011072, 140733499023359,
4232+STORE, 47608006119424, 47608006127615,
4233+STORE, 47608006127616, 47608006135807,
4234+STORE, 47608006135808, 47608006242303,
4235+STORE, 47608006152192, 47608006242303,
4236+STORE, 47608006135808, 47608006152191,
4237+ERASE, 47608006152192, 47608006152192,
4238+STORE, 47608006152192, 47608006225919,
4239+STORE, 47608006225920, 47608006242303,
4240+STORE, 47608006205440, 47608006225919,
4241+STORE, 47608006152192, 47608006205439,
4242+ERASE, 47608006152192, 47608006152192,
4243+STORE, 47608006152192, 47608006205439,
4244+STORE, 47608006221824, 47608006225919,
4245+STORE, 47608006205440, 47608006221823,
4246+ERASE, 47608006205440, 47608006205440,
4247+STORE, 47608006205440, 47608006221823,
4248+STORE, 47608006234112, 47608006242303,
4249+STORE, 47608006225920, 47608006234111,
4250+ERASE, 47608006225920, 47608006225920,
4251+STORE, 47608006225920, 47608006234111,
4252+ERASE, 47608006234112, 47608006234112,
4253+STORE, 47608006234112, 47608006242303,
4254+STORE, 47608006242304, 47608008081407,
4255+STORE, 47608006381568, 47608008081407,
4256+STORE, 47608006242304, 47608006381567,
4257+ERASE, 47608006381568, 47608006381568,
4258+STORE, 47608006381568, 47608008040447,
4259+STORE, 47608008040448, 47608008081407,
4260+STORE, 47608007725056, 47608008040447,
4261+STORE, 47608006381568, 47608007725055,
4262+ERASE, 47608006381568, 47608006381568,
4263+STORE, 47608006381568, 47608007725055,
4264+STORE, 47608008036352, 47608008040447,
4265+STORE, 47608007725056, 47608008036351,
4266+ERASE, 47608007725056, 47608007725056,
4267+STORE, 47608007725056, 47608008036351,
4268+STORE, 47608008065024, 47608008081407,
4269+STORE, 47608008040448, 47608008065023,
4270+ERASE, 47608008040448, 47608008040448,
4271+STORE, 47608008040448, 47608008065023,
4272+ERASE, 47608008065024, 47608008065024,
4273+STORE, 47608008065024, 47608008081407,
4274+STORE, 47608008065024, 47608008093695,
4275+ERASE, 47608008040448, 47608008040448,
4276+STORE, 47608008040448, 47608008056831,
4277+STORE, 47608008056832, 47608008065023,
4278+ERASE, 47608006225920, 47608006225920,
4279+STORE, 47608006225920, 47608006230015,
4280+STORE, 47608006230016, 47608006234111,
4281+ERASE, 94170740346880, 94170740346880,
4282+STORE, 94170740346880, 94170740363263,
4283+STORE, 94170740363264, 94170740367359,
4284+ERASE, 140024789037056, 140024789037056,
4285+STORE, 140024789037056, 140024789041151,
4286+STORE, 140024789041152, 140024789045247,
4287+ERASE, 47608006119424, 47608006119424,
4288+STORE, 140737488347136, 140737488351231,
4289+STORE, 140730264326144, 140737488351231,
4290+ERASE, 140730264326144, 140730264326144,
4291+STORE, 140730264326144, 140730264330239,
4292+STORE, 94653216407552, 94653217120255,
4293+ERASE, 94653216407552, 94653216407552,
4294+STORE, 94653216407552, 94653216456703,
4295+STORE, 94653216456704, 94653217120255,
4296+ERASE, 94653216456704, 94653216456704,
4297+STORE, 94653216456704, 94653217001471,
4298+STORE, 94653217001472, 94653217099775,
4299+STORE, 94653217099776, 94653217120255,
4300+STORE, 140103617011712, 140103617183743,
4301+ERASE, 140103617011712, 140103617011712,
4302+STORE, 140103617011712, 140103617015807,
4303+STORE, 140103617015808, 140103617183743,
4304+ERASE, 140103617015808, 140103617015808,
4305+STORE, 140103617015808, 140103617138687,
4306+STORE, 140103617138688, 140103617171455,
4307+STORE, 140103617171456, 140103617179647,
4308+STORE, 140103617179648, 140103617183743,
4309+STORE, 140730265427968, 140730265432063,
4310+STORE, 140730265415680, 140730265427967,
4311+STORE, 47529177985024, 47529177993215,
4312+STORE, 47529177993216, 47529178001407,
4313+STORE, 47529178001408, 47529178107903,
4314+STORE, 47529178017792, 47529178107903,
4315+STORE, 47529178001408, 47529178017791,
4316+ERASE, 47529178017792, 47529178017792,
4317+STORE, 47529178017792, 47529178091519,
4318+STORE, 47529178091520, 47529178107903,
4319+STORE, 47529178071040, 47529178091519,
4320+STORE, 47529178017792, 47529178071039,
4321+ERASE, 47529178017792, 47529178017792,
4322+STORE, 47529178017792, 47529178071039,
4323+STORE, 47529178087424, 47529178091519,
4324+STORE, 47529178071040, 47529178087423,
4325+ERASE, 47529178071040, 47529178071040,
4326+STORE, 47529178071040, 47529178087423,
4327+STORE, 47529178099712, 47529178107903,
4328+STORE, 47529178091520, 47529178099711,
4329+ERASE, 47529178091520, 47529178091520,
4330+STORE, 47529178091520, 47529178099711,
4331+ERASE, 47529178099712, 47529178099712,
4332+STORE, 47529178099712, 47529178107903,
4333+STORE, 47529178107904, 47529179947007,
4334+STORE, 47529178247168, 47529179947007,
4335+STORE, 47529178107904, 47529178247167,
4336+ERASE, 47529178247168, 47529178247168,
4337+STORE, 47529178247168, 47529179906047,
4338+STORE, 47529179906048, 47529179947007,
4339+STORE, 47529179590656, 47529179906047,
4340+STORE, 47529178247168, 47529179590655,
4341+ERASE, 47529178247168, 47529178247168,
4342+STORE, 47529178247168, 47529179590655,
4343+STORE, 47529179901952, 47529179906047,
4344+STORE, 47529179590656, 47529179901951,
4345+ERASE, 47529179590656, 47529179590656,
4346+STORE, 47529179590656, 47529179901951,
4347+STORE, 47529179930624, 47529179947007,
4348+STORE, 47529179906048, 47529179930623,
4349+ERASE, 47529179906048, 47529179906048,
4350+STORE, 47529179906048, 47529179930623,
4351+ERASE, 47529179930624, 47529179930624,
4352+STORE, 47529179930624, 47529179947007,
4353+STORE, 47529179930624, 47529179959295,
4354+ERASE, 47529179906048, 47529179906048,
4355+STORE, 47529179906048, 47529179922431,
4356+STORE, 47529179922432, 47529179930623,
4357+ERASE, 47529178091520, 47529178091520,
4358+STORE, 47529178091520, 47529178095615,
4359+STORE, 47529178095616, 47529178099711,
4360+ERASE, 94653217099776, 94653217099776,
4361+STORE, 94653217099776, 94653217116159,
4362+STORE, 94653217116160, 94653217120255,
4363+ERASE, 140103617171456, 140103617171456,
4364+STORE, 140103617171456, 140103617175551,
4365+STORE, 140103617175552, 140103617179647,
4366+ERASE, 47529177985024, 47529177985024,
4367+STORE, 94653241135104, 94653241270271,
4368+STORE, 140737488347136, 140737488351231,
4369+STORE, 140736284549120, 140737488351231,
4370+ERASE, 140736284549120, 140736284549120,
4371+STORE, 140736284549120, 140736284553215,
4372+STORE, 93963663822848, 93963664506879,
4373+ERASE, 93963663822848, 93963663822848,
4374+STORE, 93963663822848, 93963663884287,
4375+STORE, 93963663884288, 93963664506879,
4376+ERASE, 93963663884288, 93963663884288,
4377+STORE, 93963663884288, 93963664240639,
4378+STORE, 93963664240640, 93963664379903,
4379+STORE, 93963664379904, 93963664506879,
4380+STORE, 140450188439552, 140450188611583,
4381+ERASE, 140450188439552, 140450188439552,
4382+STORE, 140450188439552, 140450188443647,
4383+STORE, 140450188443648, 140450188611583,
4384+ERASE, 140450188443648, 140450188443648,
4385+STORE, 140450188443648, 140450188566527,
4386+STORE, 140450188566528, 140450188599295,
4387+STORE, 140450188599296, 140450188607487,
4388+STORE, 140450188607488, 140450188611583,
4389+STORE, 140736284577792, 140736284581887,
4390+STORE, 140736284565504, 140736284577791,
4391+STORE, 47182606557184, 47182606565375,
4392+STORE, 47182606565376, 47182606573567,
4393+STORE, 47182606573568, 47182608412671,
4394+STORE, 47182606712832, 47182608412671,
4395+STORE, 47182606573568, 47182606712831,
4396+ERASE, 47182606712832, 47182606712832,
4397+STORE, 47182606712832, 47182608371711,
4398+STORE, 47182608371712, 47182608412671,
4399+STORE, 47182608056320, 47182608371711,
4400+STORE, 47182606712832, 47182608056319,
4401+ERASE, 47182606712832, 47182606712832,
4402+STORE, 47182606712832, 47182608056319,
4403+STORE, 47182608367616, 47182608371711,
4404+STORE, 47182608056320, 47182608367615,
4405+ERASE, 47182608056320, 47182608056320,
4406+STORE, 47182608056320, 47182608367615,
4407+STORE, 47182608396288, 47182608412671,
4408+STORE, 47182608371712, 47182608396287,
4409+ERASE, 47182608371712, 47182608371712,
4410+STORE, 47182608371712, 47182608396287,
4411+ERASE, 47182608396288, 47182608396288,
4412+STORE, 47182608396288, 47182608412671,
4413+STORE, 47182608412672, 47182608523263,
4414+STORE, 47182608429056, 47182608523263,
4415+STORE, 47182608412672, 47182608429055,
4416+ERASE, 47182608429056, 47182608429056,
4417+STORE, 47182608429056, 47182608515071,
4418+STORE, 47182608515072, 47182608523263,
4419+STORE, 47182608490496, 47182608515071,
4420+STORE, 47182608429056, 47182608490495,
4421+ERASE, 47182608429056, 47182608429056,
4422+STORE, 47182608429056, 47182608490495,
4423+STORE, 47182608510976, 47182608515071,
4424+STORE, 47182608490496, 47182608510975,
4425+ERASE, 47182608490496, 47182608490496,
4426+STORE, 47182608490496, 47182608510975,
4427+ERASE, 47182608515072, 47182608515072,
4428+STORE, 47182608515072, 47182608523263,
4429+STORE, 47182608523264, 47182608568319,
4430+ERASE, 47182608523264, 47182608523264,
4431+STORE, 47182608523264, 47182608531455,
4432+STORE, 47182608531456, 47182608568319,
4433+STORE, 47182608551936, 47182608568319,
4434+STORE, 47182608531456, 47182608551935,
4435+ERASE, 47182608531456, 47182608531456,
4436+STORE, 47182608531456, 47182608551935,
4437+STORE, 47182608560128, 47182608568319,
4438+STORE, 47182608551936, 47182608560127,
4439+ERASE, 47182608551936, 47182608551936,
4440+STORE, 47182608551936, 47182608568319,
4441+ERASE, 47182608551936, 47182608551936,
4442+STORE, 47182608551936, 47182608560127,
4443+STORE, 47182608560128, 47182608568319,
4444+ERASE, 47182608560128, 47182608560128,
4445+STORE, 47182608560128, 47182608568319,
4446+STORE, 47182608568320, 47182608916479,
4447+STORE, 47182608609280, 47182608916479,
4448+STORE, 47182608568320, 47182608609279,
4449+ERASE, 47182608609280, 47182608609280,
4450+STORE, 47182608609280, 47182608891903,
4451+STORE, 47182608891904, 47182608916479,
4452+STORE, 47182608822272, 47182608891903,
4453+STORE, 47182608609280, 47182608822271,
4454+ERASE, 47182608609280, 47182608609280,
4455+STORE, 47182608609280, 47182608822271,
4456+STORE, 47182608887808, 47182608891903,
4457+STORE, 47182608822272, 47182608887807,
4458+ERASE, 47182608822272, 47182608822272,
4459+STORE, 47182608822272, 47182608887807,
4460+ERASE, 47182608891904, 47182608891904,
4461+STORE, 47182608891904, 47182608916479,
4462+STORE, 47182608916480, 47182611177471,
4463+STORE, 47182609068032, 47182611177471,
4464+STORE, 47182608916480, 47182609068031,
4465+ERASE, 47182609068032, 47182609068032,
4466+STORE, 47182609068032, 47182611161087,
4467+STORE, 47182611161088, 47182611177471,
4468+STORE, 47182611169280, 47182611177471,
4469+STORE, 47182611161088, 47182611169279,
4470+ERASE, 47182611161088, 47182611161088,
4471+STORE, 47182611161088, 47182611169279,
4472+ERASE, 47182611169280, 47182611169280,
4473+STORE, 47182611169280, 47182611177471,
4474+STORE, 47182611177472, 47182611312639,
4475+ERASE, 47182611177472, 47182611177472,
4476+STORE, 47182611177472, 47182611202047,
4477+STORE, 47182611202048, 47182611312639,
4478+STORE, 47182611263488, 47182611312639,
4479+STORE, 47182611202048, 47182611263487,
4480+ERASE, 47182611202048, 47182611202048,
4481+STORE, 47182611202048, 47182611263487,
4482+STORE, 47182611288064, 47182611312639,
4483+STORE, 47182611263488, 47182611288063,
4484+ERASE, 47182611263488, 47182611263488,
4485+STORE, 47182611263488, 47182611312639,
4486+ERASE, 47182611263488, 47182611263488,
4487+STORE, 47182611263488, 47182611288063,
4488+STORE, 47182611288064, 47182611312639,
4489+STORE, 47182611296256, 47182611312639,
4490+STORE, 47182611288064, 47182611296255,
4491+ERASE, 47182611288064, 47182611288064,
4492+STORE, 47182611288064, 47182611296255,
4493+ERASE, 47182611296256, 47182611296256,
4494+STORE, 47182611296256, 47182611312639,
4495+STORE, 47182611296256, 47182611320831,
4496+STORE, 47182611320832, 47182611484671,
4497+ERASE, 47182611320832, 47182611320832,
4498+STORE, 47182611320832, 47182611333119,
4499+STORE, 47182611333120, 47182611484671,
4500+STORE, 47182611431424, 47182611484671,
4501+STORE, 47182611333120, 47182611431423,
4502+ERASE, 47182611333120, 47182611333120,
4503+STORE, 47182611333120, 47182611431423,
4504+STORE, 47182611476480, 47182611484671,
4505+STORE, 47182611431424, 47182611476479,
4506+ERASE, 47182611431424, 47182611431424,
4507+STORE, 47182611431424, 47182611484671,
4508+ERASE, 47182611431424, 47182611431424,
4509+STORE, 47182611431424, 47182611476479,
4510+STORE, 47182611476480, 47182611484671,
4511+ERASE, 47182611476480, 47182611476480,
4512+STORE, 47182611476480, 47182611484671,
4513+STORE, 47182611484672, 47182612082687,
4514+STORE, 47182611603456, 47182612082687,
4515+STORE, 47182611484672, 47182611603455,
4516+ERASE, 47182611603456, 47182611603456,
4517+STORE, 47182611603456, 47182612029439,
4518+STORE, 47182612029440, 47182612082687,
4519+STORE, 47182611918848, 47182612029439,
4520+STORE, 47182611603456, 47182611918847,
4521+ERASE, 47182611603456, 47182611603456,
4522+STORE, 47182611603456, 47182611918847,
4523+STORE, 47182612025344, 47182612029439,
4524+STORE, 47182611918848, 47182612025343,
4525+ERASE, 47182611918848, 47182611918848,
4526+STORE, 47182611918848, 47182612025343,
4527+ERASE, 47182612029440, 47182612029440,
4528+STORE, 47182612029440, 47182612082687,
4529+STORE, 47182612082688, 47182615134207,
4530+STORE, 47182612627456, 47182615134207,
4531+STORE, 47182612082688, 47182612627455,
4532+ERASE, 47182612627456, 47182612627456,
4533+STORE, 47182612627456, 47182614913023,
4534+STORE, 47182614913024, 47182615134207,
4535+STORE, 47182614323200, 47182614913023,
4536+STORE, 47182612627456, 47182614323199,
4537+ERASE, 47182612627456, 47182612627456,
4538+STORE, 47182612627456, 47182614323199,
4539+STORE, 47182614908928, 47182614913023,
4540+STORE, 47182614323200, 47182614908927,
4541+ERASE, 47182614323200, 47182614323200,
4542+STORE, 47182614323200, 47182614908927,
4543+STORE, 47182615117824, 47182615134207,
4544+STORE, 47182614913024, 47182615117823,
4545+ERASE, 47182614913024, 47182614913024,
4546+STORE, 47182614913024, 47182615117823,
4547+ERASE, 47182615117824, 47182615117824,
4548+STORE, 47182615117824, 47182615134207,
4549+STORE, 47182615134208, 47182615166975,
4550+ERASE, 47182615134208, 47182615134208,
4551+STORE, 47182615134208, 47182615142399,
4552+STORE, 47182615142400, 47182615166975,
4553+STORE, 47182615154688, 47182615166975,
4554+STORE, 47182615142400, 47182615154687,
4555+ERASE, 47182615142400, 47182615142400,
4556+STORE, 47182615142400, 47182615154687,
4557+STORE, 47182615158784, 47182615166975,
4558+STORE, 47182615154688, 47182615158783,
4559+ERASE, 47182615154688, 47182615154688,
4560+STORE, 47182615154688, 47182615166975,
4561+ERASE, 47182615154688, 47182615154688,
4562+STORE, 47182615154688, 47182615158783,
4563+STORE, 47182615158784, 47182615166975,
4564+ERASE, 47182615158784, 47182615158784,
4565+STORE, 47182615158784, 47182615166975,
4566+STORE, 47182615166976, 47182615203839,
4567+ERASE, 47182615166976, 47182615166976,
4568+STORE, 47182615166976, 47182615175167,
4569+STORE, 47182615175168, 47182615203839,
4570+STORE, 47182615191552, 47182615203839,
4571+STORE, 47182615175168, 47182615191551,
4572+ERASE, 47182615175168, 47182615175168,
4573+STORE, 47182615175168, 47182615191551,
4574+STORE, 47182615195648, 47182615203839,
4575+STORE, 47182615191552, 47182615195647,
4576+ERASE, 47182615191552, 47182615191552,
4577+STORE, 47182615191552, 47182615203839,
4578+ERASE, 47182615191552, 47182615191552,
4579+STORE, 47182615191552, 47182615195647,
4580+STORE, 47182615195648, 47182615203839,
4581+ERASE, 47182615195648, 47182615195648,
4582+STORE, 47182615195648, 47182615203839,
4583+STORE, 47182615203840, 47182615678975,
4584+ERASE, 47182615203840, 47182615203840,
4585+STORE, 47182615203840, 47182615212031,
4586+STORE, 47182615212032, 47182615678975,
4587+STORE, 47182615547904, 47182615678975,
4588+STORE, 47182615212032, 47182615547903,
4589+ERASE, 47182615212032, 47182615212032,
4590+STORE, 47182615212032, 47182615547903,
4591+STORE, 47182615670784, 47182615678975,
4592+STORE, 47182615547904, 47182615670783,
4593+ERASE, 47182615547904, 47182615547904,
4594+STORE, 47182615547904, 47182615678975,
4595+ERASE, 47182615547904, 47182615547904,
4596+STORE, 47182615547904, 47182615670783,
4597+STORE, 47182615670784, 47182615678975,
4598+ERASE, 47182615670784, 47182615670784,
4599+STORE, 47182615670784, 47182615678975,
4600+STORE, 47182615678976, 47182615687167,
4601+STORE, 47182615687168, 47182615707647,
4602+ERASE, 47182615687168, 47182615687168,
4603+STORE, 47182615687168, 47182615691263,
4604+STORE, 47182615691264, 47182615707647,
4605+STORE, 47182615695360, 47182615707647,
4606+STORE, 47182615691264, 47182615695359,
4607+ERASE, 47182615691264, 47182615691264,
4608+STORE, 47182615691264, 47182615695359,
4609+STORE, 47182615699456, 47182615707647,
4610+STORE, 47182615695360, 47182615699455,
4611+ERASE, 47182615695360, 47182615695360,
4612+STORE, 47182615695360, 47182615707647,
4613+ERASE, 47182615695360, 47182615695360,
4614+STORE, 47182615695360, 47182615699455,
4615+STORE, 47182615699456, 47182615707647,
4616+ERASE, 47182615699456, 47182615699456,
4617+STORE, 47182615699456, 47182615707647,
4618+STORE, 47182615707648, 47182615715839,
4619+ERASE, 47182608371712, 47182608371712,
4620+STORE, 47182608371712, 47182608388095,
4621+STORE, 47182608388096, 47182608396287,
4622+ERASE, 47182615699456, 47182615699456,
4623+STORE, 47182615699456, 47182615703551,
4624+STORE, 47182615703552, 47182615707647,
4625+ERASE, 47182611288064, 47182611288064,
4626+STORE, 47182611288064, 47182611292159,
4627+STORE, 47182611292160, 47182611296255,
4628+ERASE, 47182615670784, 47182615670784,
4629+STORE, 47182615670784, 47182615674879,
4630+STORE, 47182615674880, 47182615678975,
4631+ERASE, 47182615195648, 47182615195648,
4632+STORE, 47182615195648, 47182615199743,
4633+STORE, 47182615199744, 47182615203839,
4634+ERASE, 47182615158784, 47182615158784,
4635+STORE, 47182615158784, 47182615162879,
4636+STORE, 47182615162880, 47182615166975,
4637+ERASE, 47182614913024, 47182614913024,
4638+STORE, 47182614913024, 47182615109631,
4639+STORE, 47182615109632, 47182615117823,
4640+ERASE, 47182612029440, 47182612029440,
4641+STORE, 47182612029440, 47182612066303,
4642+STORE, 47182612066304, 47182612082687,
4643+ERASE, 47182611476480, 47182611476480,
4644+STORE, 47182611476480, 47182611480575,
4645+STORE, 47182611480576, 47182611484671,
4646+ERASE, 47182611161088, 47182611161088,
4647+STORE, 47182611161088, 47182611165183,
4648+STORE, 47182611165184, 47182611169279,
4649+ERASE, 47182608891904, 47182608891904,
4650+STORE, 47182608891904, 47182608912383,
4651+STORE, 47182608912384, 47182608916479,
4652+ERASE, 47182608560128, 47182608560128,
4653+STORE, 47182608560128, 47182608564223,
4654+STORE, 47182608564224, 47182608568319,
4655+ERASE, 47182608515072, 47182608515072,
4656+STORE, 47182608515072, 47182608519167,
4657+STORE, 47182608519168, 47182608523263,
4658+ERASE, 93963664379904, 93963664379904,
4659+STORE, 93963664379904, 93963664502783,
4660+STORE, 93963664502784, 93963664506879,
4661+ERASE, 140450188599296, 140450188599296,
4662+STORE, 140450188599296, 140450188603391,
4663+STORE, 140450188603392, 140450188607487,
4664+ERASE, 47182606557184, 47182606557184,
4665+STORE, 93963694723072, 93963694858239,
4666+STORE, 140737488347136, 140737488351231,
4667+STORE, 140730313261056, 140737488351231,
4668+ERASE, 140730313261056, 140730313261056,
4669+STORE, 140730313261056, 140730313265151,
4670+STORE, 94386579017728, 94386579697663,
4671+ERASE, 94386579017728, 94386579017728,
4672+STORE, 94386579017728, 94386579083263,
4673+STORE, 94386579083264, 94386579697663,
4674+ERASE, 94386579083264, 94386579083264,
4675+STORE, 94386579083264, 94386579431423,
4676+STORE, 94386579431424, 94386579570687,
4677+STORE, 94386579570688, 94386579697663,
4678+STORE, 140124810838016, 140124811010047,
4679+ERASE, 140124810838016, 140124810838016,
4680+STORE, 140124810838016, 140124810842111,
4681+STORE, 140124810842112, 140124811010047,
4682+ERASE, 140124810842112, 140124810842112,
4683+STORE, 140124810842112, 140124810964991,
4684+STORE, 140124810964992, 140124810997759,
4685+STORE, 140124810997760, 140124811005951,
4686+STORE, 140124811005952, 140124811010047,
4687+STORE, 140730313601024, 140730313605119,
4688+STORE, 140730313588736, 140730313601023,
4689+STORE, 47507984158720, 47507984166911,
4690+STORE, 47507984166912, 47507984175103,
4691+STORE, 47507984175104, 47507986014207,
4692+STORE, 47507984314368, 47507986014207,
4693+STORE, 47507984175104, 47507984314367,
4694+ERASE, 47507984314368, 47507984314368,
4695+STORE, 47507984314368, 47507985973247,
4696+STORE, 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.