Merge series from Maarten Zanders <maarten.zanders@mind.be>: A collection of fixes and improvements for the adau1372 driver.
Unified · Split
| @@ -918,6 +918,11 @@ S: Ottawa, Ontario · 917 unmodified lines | |||
| 918 | S: K1N 6Z9 | 918 | S: K1N 6Z9 |
| 919 | S: CANADA | 919 | S: CANADA |
| 920 | 920 | ||
| 921 | N: Vivien Didelot | ||
| 922 | E: vivien.didelot@gmail.com | ||
| 923 | D: DSA framework and MV88E6XXX driver | ||
| 924 | S: Montreal, Quebec, Canada | ||
| 925 | |||
| 921 | N: Jeff Dike | 926 | N: Jeff Dike |
| 922 | E: jdike@karaya.com | 927 | E: jdike@karaya.com |
| 923 | W: http://user-mode-linux.sourceforge.net | 928 | W: http://user-mode-linux.sourceforge.net |
| @@ -67,6 +67,7 @@ uninitialized in the local variable, as well as the stack where the value was · 66 unmodified lines | |||
| 67 | copied to another memory location before use. | 67 | copied to another memory location before use. |
| 68 | 68 | ||
| 69 | A use of uninitialized value ``v`` is reported by KMSAN in the following cases: | 69 | A use of uninitialized value ``v`` is reported by KMSAN in the following cases: |
| 70 | |||
| 70 | - in a condition, e.g. ``if (v) { ... }``; | 71 | - in a condition, e.g. ``if (v) { ... }``; |
| 71 | - in an indexing or pointer dereferencing, e.g. ``array[v]`` or ``*v``; | 72 | - in an indexing or pointer dereferencing, e.g. ``array[v]`` or ``*v``; |
| 72 | - when it is copied to userspace or hardware, e.g. ``copy_to_user(..., &v, ...)``; | 73 | - when it is copied to userspace or hardware, e.g. ``copy_to_user(..., &v, ...)``; |
| @@ -15,9 +15,22 @@ description: · 14 unmodified lines | |||
| 15 | 15 | ||
| 16 | properties: | 16 | properties: |
| 17 | compatible: | 17 | compatible: |
| 18 | enum: | 18 | oneOf: |
| 19 | - qcom,sfpb-mutex | 19 | - enum: |
| 20 | - qcom,tcsr-mutex | 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 | ||
| 21 | 34 | ||
| 22 | reg: | 35 | reg: |
| 23 | maxItems: 1 | 36 | maxItems: 1 |
| @@ -34,9 +47,9 @@ additionalProperties: false · 10 unmodified lines | |||
| 34 | 47 | ||
| 35 | examples: | 48 | examples: |
| 36 | - | | 49 | - | |
| 37 | tcsr_mutex: hwlock@1f40000 { | 50 | hwlock@1f40000 { |
| 38 | compatible = "qcom,tcsr-mutex"; | 51 | compatible = "qcom,tcsr-mutex"; |
| 39 | reg = <0x01f40000 0x40000>; | 52 | reg = <0x01f40000 0x40000>; |
| 40 | #hwlock-cells = <1>; | 53 | #hwlock-cells = <1>; |
| 41 | }; | 54 | }; |
| 42 | ... | 55 | ... |
| @@ -47,7 +47,7 @@ properties: · 46 unmodified lines | |||
| 47 | 47 | ||
| 48 | nvmem-cells: true | 48 | nvmem-cells: true |
| 49 | 49 | ||
| 50 | nvmem-cells-names: true | 50 | nvmem-cell-names: true |
| 51 | 51 | ||
| 52 | phy-connection-type: | 52 | phy-connection-type: |
| 53 | enum: | 53 | enum: |
| @@ -215,6 +215,7 @@ KVM_S390_VM_TOD_EXT). · 214 unmodified lines | |||
| 215 | :Parameters: address of a buffer in user space to store the data (u8) to | 215 | :Parameters: address of a buffer in user space to store the data (u8) to |
| 216 | :Returns: -EFAULT if the given address is not accessible from kernel space; | 216 | :Returns: -EFAULT if the given address is not accessible from kernel space; |
| 217 | -EINVAL if setting the TOD clock extension to != 0 is not supported | 217 | -EINVAL if setting the TOD clock extension to != 0 is not supported |
| 218 | -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor) | ||
| 218 | 219 | ||
| 219 | 3.2. ATTRIBUTE: KVM_S390_VM_TOD_LOW | 220 | 3.2. ATTRIBUTE: KVM_S390_VM_TOD_LOW |
| 220 | ----------------------------------- | 221 | ----------------------------------- |
| @@ -224,6 +225,7 @@ the POP (u64). · 3 unmodified lines | |||
| 224 | 225 | ||
| 225 | :Parameters: address of a buffer in user space to store the data (u64) to | 226 | :Parameters: address of a buffer in user space to store the data (u64) to |
| 226 | :Returns: -EFAULT if the given address is not accessible from kernel space | 227 | :Returns: -EFAULT if the given address is not accessible from kernel space |
| 228 | -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor) | ||
| 227 | 229 | ||
| 228 | 3.3. ATTRIBUTE: KVM_S390_VM_TOD_EXT | 230 | 3.3. ATTRIBUTE: KVM_S390_VM_TOD_EXT |
| 229 | ----------------------------------- | 231 | ----------------------------------- |
| @@ -237,6 +239,7 @@ it, it is stored as 0 and not allowed to be set to a value != 0. · 7 unmodified lines | |||
| 237 | (kvm_s390_vm_tod_clock) to | 239 | (kvm_s390_vm_tod_clock) to |
| 238 | :Returns: -EFAULT if the given address is not accessible from kernel space; | 240 | :Returns: -EFAULT if the given address is not accessible from kernel space; |
| 239 | -EINVAL if setting the TOD clock extension to != 0 is not supported | 241 | -EINVAL if setting the TOD clock extension to != 0 is not supported |
| 242 | -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor) | ||
| 240 | 243 | ||
| 241 | 4. GROUP: KVM_S390_VM_CRYPTO | 244 | 4. GROUP: KVM_S390_VM_CRYPTO |
| 242 | ============================ | 245 | ============================ |
| @@ -8602,8 +8602,8 @@ F: include/asm-generic/ · 8601 unmodified lines | |||
| 8602 | F: include/uapi/asm-generic/ | 8602 | F: include/uapi/asm-generic/ |
| 8603 | 8603 | ||
| 8604 | GENERIC PHY FRAMEWORK | 8604 | GENERIC PHY FRAMEWORK |
| 8605 | M: Kishon Vijay Abraham I <kishon@ti.com> | ||
| 8606 | M: Vinod Koul <vkoul@kernel.org> | 8605 | M: Vinod Koul <vkoul@kernel.org> |
| 8606 | M: Kishon Vijay Abraham I <kishon@kernel.org> | ||
| 8607 | L: linux-phy@lists.infradead.org | 8607 | L: linux-phy@lists.infradead.org |
| 8608 | S: Supported | 8608 | S: Supported |
| 8609 | Q: https://patchwork.kernel.org/project/linux-phy/list/ | 8609 | Q: https://patchwork.kernel.org/project/linux-phy/list/ |
| @@ -9341,7 +9341,7 @@ S: Maintained · 731 unmodified lines | |||
| 9341 | F: drivers/crypto/hisilicon/trng/trng.c | 9341 | F: drivers/crypto/hisilicon/trng/trng.c |
| 9342 | 9342 | ||
| 9343 | HISILICON V3XX SPI NOR FLASH Controller Driver | 9343 | HISILICON V3XX SPI NOR FLASH Controller Driver |
| 9344 | M: John Garry <john.garry@huawei.com> | 9344 | M: Jay Fang <f.fangjian@huawei.com> |
| 9345 | S: Maintained | 9345 | S: Maintained |
| 9346 | W: http://www.hisilicon.com | 9346 | W: http://www.hisilicon.com |
| 9347 | F: drivers/spi/spi-hisi-sfc-v3xx.c | 9347 | F: drivers/spi/spi-hisi-sfc-v3xx.c |
| @@ -9507,7 +9507,6 @@ F: drivers/media/i2c/hi847.c · 159 unmodified lines | |||
| 9507 | Hyper-V/Azure CORE AND DRIVERS | 9507 | Hyper-V/Azure CORE AND DRIVERS |
| 9508 | M: "K. Y. Srinivasan" <kys@microsoft.com> | 9508 | M: "K. Y. Srinivasan" <kys@microsoft.com> |
| 9509 | M: Haiyang Zhang <haiyangz@microsoft.com> | 9509 | M: Haiyang Zhang <haiyangz@microsoft.com> |
| 9510 | M: Stephen Hemminger <sthemmin@microsoft.com> | ||
| 9511 | M: Wei Liu <wei.liu@kernel.org> | 9510 | M: Wei Liu <wei.liu@kernel.org> |
| 9512 | M: Dexuan Cui <decui@microsoft.com> | 9511 | M: Dexuan Cui <decui@microsoft.com> |
| 9513 | L: linux-hyperv@vger.kernel.org | 9512 | L: linux-hyperv@vger.kernel.org |
| @@ -12226,7 +12225,6 @@ F: arch/mips/boot/dts/img/pistachio* · 2712 unmodified lines | |||
| 12226 | 12225 | ||
| 12227 | MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER | 12226 | MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER |
| 12228 | M: Andrew Lunn <andrew@lunn.ch> | 12227 | M: Andrew Lunn <andrew@lunn.ch> |
| 12229 | M: Vivien Didelot <vivien.didelot@gmail.com> | ||
| 12230 | L: netdev@vger.kernel.org | 12228 | L: netdev@vger.kernel.org |
| 12231 | S: Maintained | 12229 | S: Maintained |
| 12232 | F: Documentation/devicetree/bindings/net/dsa/marvell.txt | 12230 | F: Documentation/devicetree/bindings/net/dsa/marvell.txt |
| @@ -14324,7 +14322,6 @@ F: drivers/net/wireless/ · 2091 unmodified lines | |||
| 14324 | 14322 | ||
| 14325 | NETWORKING [DSA] | 14323 | NETWORKING [DSA] |
| 14326 | M: Andrew Lunn <andrew@lunn.ch> | 14324 | M: Andrew Lunn <andrew@lunn.ch> |
| 14327 | M: Vivien Didelot <vivien.didelot@gmail.com> | ||
| 14328 | M: Florian Fainelli <f.fainelli@gmail.com> | 14325 | M: Florian Fainelli <f.fainelli@gmail.com> |
| 14329 | M: Vladimir Oltean <olteanv@gmail.com> | 14326 | M: Vladimir Oltean <olteanv@gmail.com> |
| 14330 | S: Maintained | 14327 | S: Maintained |
| @@ -2,7 +2,7 @@ · 1 unmodified line | |||
| 2 | VERSION = 6 | 2 | VERSION = 6 |
| 3 | PATCHLEVEL = 1 | 3 | PATCHLEVEL = 1 |
| 4 | SUBLEVEL = 0 | 4 | SUBLEVEL = 0 |
| 5 | EXTRAVERSION = -rc4 | 5 | EXTRAVERSION = -rc5 |
| 6 | NAME = Hurr durr I'ma ninja sloth | 6 | NAME = Hurr durr I'ma ninja sloth |
| 7 | 7 | ||
| 8 | # *DOCUMENTATION* | 8 | # *DOCUMENTATION* |
| @@ -41,7 +41,7 @@ · 40 unmodified lines | |||
| 41 | (((midr) & MIDR_IMPLEMENTOR_MASK) >> MIDR_IMPLEMENTOR_SHIFT) | 41 | (((midr) & MIDR_IMPLEMENTOR_MASK) >> MIDR_IMPLEMENTOR_SHIFT) |
| 42 | 42 | ||
| 43 | #define MIDR_CPU_MODEL(imp, partnum) \ | 43 | #define MIDR_CPU_MODEL(imp, partnum) \ |
| 44 | (((imp) << MIDR_IMPLEMENTOR_SHIFT) | \ | 44 | ((_AT(u32, imp) << MIDR_IMPLEMENTOR_SHIFT) | \ |
| 45 | (0xf << MIDR_ARCHITECTURE_SHIFT) | \ | 45 | (0xf << MIDR_ARCHITECTURE_SHIFT) | \ |
| 46 | ((partnum) << MIDR_PARTNUM_SHIFT)) | 46 | ((partnum) << MIDR_PARTNUM_SHIFT)) |
| 47 | 47 | ||
| @@ -8,7 +8,7 @@ · 7 unmodified lines | |||
| 8 | #ifndef __ASM_SYSCALL_WRAPPER_H | 8 | #ifndef __ASM_SYSCALL_WRAPPER_H |
| 9 | #define __ASM_SYSCALL_WRAPPER_H | 9 | #define __ASM_SYSCALL_WRAPPER_H |
| 10 | 10 | ||
| 11 | struct pt_regs; | 11 | #include <asm/ptrace.h> |
| 12 | 12 | ||
| 13 | #define SC_ARM64_REGS_TO_ARGS(x, ...) \ | 13 | #define SC_ARM64_REGS_TO_ARGS(x, ...) \ |
| 14 | __MAP(x,__SC_ARGS \ | 14 | __MAP(x,__SC_ARGS \ |
| @@ -13,6 +13,14 @@ · 12 unmodified lines | |||
| 13 | 13 | ||
| 14 | #include <asm/efi.h> | 14 | #include <asm/efi.h> |
| 15 | 15 | ||
| 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 | |||
| 16 | /* | 24 | /* |
| 17 | * Only regions of type EFI_RUNTIME_SERVICES_CODE need to be | 25 | * Only regions of type EFI_RUNTIME_SERVICES_CODE need to be |
| 18 | * executable, everything else can be mapped with the XN bits | 26 | * executable, everything else can be mapped with the XN bits |
| @@ -26,14 +34,22 @@ static __init pteval_t create_mapping_protection(efi_memory_desc_t *md) · 7 unmodified lines | |||
| 26 | if (type == EFI_MEMORY_MAPPED_IO) | 34 | if (type == EFI_MEMORY_MAPPED_IO) |
| 27 | return PROT_DEVICE_nGnRE; | 35 | return PROT_DEVICE_nGnRE; |
| 28 | 36 | ||
| 29 | if (WARN_ONCE(!PAGE_ALIGNED(md->phys_addr), | 37 | if (region_is_misaligned(md)) { |
| 30 | "UEFI Runtime regions are not aligned to 64 KB -- buggy firmware?")) | 38 | static bool __initdata code_is_misaligned; |
| 39 | |||
| 31 | /* | 40 | /* |
| 32 | * If the region is not aligned to the page size of the OS, we | 41 | * Regions that are not aligned to the OS page size cannot be |
| 33 | * can not use strict permissions, since that would also affect | 42 | * mapped with strict permissions, as those might interfere |
| 34 | * the mapping attributes of the adjacent regions. | 43 | * with the permissions that are needed by the adjacent |
| 44 | * region's mapping. However, if we haven't encountered any | ||
| 45 | * misaligned runtime code regions so far, we can safely use | ||
| 46 | * non-executable permissions for non-code regions. | ||
| 35 | */ | 47 | */ |
| 36 | return pgprot_val(PAGE_KERNEL_EXEC); | 48 | code_is_misaligned |= (type == EFI_RUNTIME_SERVICES_CODE); |
| 49 | |||
| 50 | return code_is_misaligned ? pgprot_val(PAGE_KERNEL_EXEC) | ||
| 51 | : pgprot_val(PAGE_KERNEL); | ||
| 52 | } | ||
| 37 | 53 | ||
| 38 | /* R-- */ | 54 | /* R-- */ |
| 39 | if ((attr & (EFI_MEMORY_XP | EFI_MEMORY_RO)) == | 55 | if ((attr & (EFI_MEMORY_XP | EFI_MEMORY_RO)) == |
| @@ -64,19 +80,16 @@ int __init efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md) · 24 unmodified lines | |||
| 64 | bool page_mappings_only = (md->type == EFI_RUNTIME_SERVICES_CODE || | 80 | bool page_mappings_only = (md->type == EFI_RUNTIME_SERVICES_CODE || |
| 65 | md->type == EFI_RUNTIME_SERVICES_DATA); | 81 | md->type == EFI_RUNTIME_SERVICES_DATA); |
| 66 | 82 | ||
| 67 | if (!PAGE_ALIGNED(md->phys_addr) || | 83 | /* |
| 68 | !PAGE_ALIGNED(md->num_pages << EFI_PAGE_SHIFT)) { | 84 | * If this region is not aligned to the page size used by the OS, the |
| 69 | /* | 85 | * mapping will be rounded outwards, and may end up sharing a page |
| 70 | * If the end address of this region is not aligned to page | 86 | * frame with an adjacent runtime memory region. Given that the page |
| 71 | * size, the mapping is rounded up, and may end up sharing a | 87 | * table descriptor covering the shared page will be rewritten when the |
| 72 | * page frame with the next UEFI memory region. If we create | 88 | * adjacent region gets mapped, we must avoid block mappings here so we |
| 73 | * a block entry now, we may need to split it again when mapping | 89 | * don't have to worry about splitting them when that happens. |
| 74 | * the next region, and support for that is going to be removed | 90 | */ |
| 75 | * from the MMU routines. So avoid block mappings altogether in | 91 | if (region_is_misaligned(md)) |
| 76 | * that case. | ||
| 77 | */ | ||
| 78 | page_mappings_only = true; | 92 | page_mappings_only = true; |
| 79 | } | ||
| 80 | 93 | ||
| 81 | create_pgd_mapping(mm, md->phys_addr, md->virt_addr, | 94 | create_pgd_mapping(mm, md->phys_addr, md->virt_addr, |
| 82 | md->num_pages << EFI_PAGE_SHIFT, | 95 | md->num_pages << EFI_PAGE_SHIFT, |
| @@ -103,6 +116,9 @@ int __init efi_set_mapping_permissions(struct mm_struct *mm, · 20 unmodified lines | |||
| 103 | BUG_ON(md->type != EFI_RUNTIME_SERVICES_CODE && | 116 | BUG_ON(md->type != EFI_RUNTIME_SERVICES_CODE && |
| 104 | md->type != EFI_RUNTIME_SERVICES_DATA); | 117 | md->type != EFI_RUNTIME_SERVICES_DATA); |
| 105 | 118 | ||
| 119 | if (region_is_misaligned(md)) | ||
| 120 | return 0; | ||
| 121 | |||
| 106 | /* | 122 | /* |
| 107 | * Calling apply_to_page_range() is only safe on regions that are | 123 | * Calling apply_to_page_range() is only safe on regions that are |
| 108 | * guaranteed to be mapped down to pages. Since we are only called | 124 | * guaranteed to be mapped down to pages. Since we are only called |
| @@ -26,7 +26,7 @@ bool can_set_direct_map(void) · 25 unmodified lines | |||
| 26 | * mapped at page granularity, so that it is possible to | 26 | * mapped at page granularity, so that it is possible to |
| 27 | * protect/unprotect single pages. | 27 | * protect/unprotect single pages. |
| 28 | */ | 28 | */ |
| 29 | return rodata_full || debug_pagealloc_enabled() || | 29 | return (rodata_enabled && rodata_full) || debug_pagealloc_enabled() || |
| 30 | IS_ENABLED(CONFIG_KFENCE); | 30 | IS_ENABLED(CONFIG_KFENCE); |
| 31 | } | 31 | } |
| 32 | 32 | ||
| @@ -102,7 +102,8 @@ static int change_memory_common(unsigned long addr, int numpages, · 69 unmodified lines | |||
| 102 | * If we are manipulating read-only permissions, apply the same | 102 | * If we are manipulating read-only permissions, apply the same |
| 103 | * change to the linear mapping of the pages that back this VM area. | 103 | * change to the linear mapping of the pages that back this VM area. |
| 104 | */ | 104 | */ |
| 105 | if (rodata_full && (pgprot_val(set_mask) == PTE_RDONLY || | 105 | if (rodata_enabled && |
| 106 | rodata_full && (pgprot_val(set_mask) == PTE_RDONLY || | ||
| 106 | pgprot_val(clear_mask) == PTE_RDONLY)) { | 107 | pgprot_val(clear_mask) == PTE_RDONLY)) { |
| 107 | for (i = 0; i < area->nr_pages; i++) { | 108 | for (i = 0; i < area->nr_pages; i++) { |
| 108 | __change_memory_common((u64)page_address(area->pages[i]), | 109 | __change_memory_common((u64)page_address(area->pages[i]), |
| @@ -31,7 +31,7 @@ · 30 unmodified lines | |||
| 31 | #include <linux/init.h> | 31 | #include <linux/init.h> |
| 32 | #include <linux/kernel.h> | 32 | #include <linux/kernel.h> |
| 33 | #include <linux/types.h> | 33 | #include <linux/types.h> |
| 34 | #include <linux/gpio.h> | 34 | #include <linux/gpio/driver.h> |
| 35 | #include <asm/mach-au1x00/gpio-au1000.h> | 35 | #include <asm/mach-au1x00/gpio-au1000.h> |
| 36 | #include <asm/mach-au1x00/gpio-au1300.h> | 36 | #include <asm/mach-au1x00/gpio-au1300.h> |
| 37 | 37 | ||
| @@ -9,6 +9,7 @@ · 8 unmodified lines | |||
| 9 | 9 | ||
| 10 | #define DISABLE_BRANCH_PROFILING | 10 | #define DISABLE_BRANCH_PROFILING |
| 11 | 11 | ||
| 12 | #define __NO_FORTIFY | ||
| 12 | #include <linux/types.h> | 13 | #include <linux/types.h> |
| 13 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
| 14 | #include <linux/string.h> | 15 | #include <linux/string.h> |
| @@ -26,6 +26,6 @@ extern char *fw_getcmdline(void); · 25 unmodified lines | |||
| 26 | extern void fw_meminit(void); | 26 | extern void fw_meminit(void); |
| 27 | extern char *fw_getenv(char *name); | 27 | extern char *fw_getenv(char *name); |
| 28 | extern unsigned long fw_getenvl(char *name); | 28 | extern unsigned long fw_getenvl(char *name); |
| 29 | extern void fw_init_early_console(char port); | 29 | extern void fw_init_early_console(void); |
| 30 | 30 | ||
| 31 | #endif /* __ASM_FW_H_ */ | 31 | #endif /* __ASM_FW_H_ */ |
| @@ -56,7 +56,7 @@ void arch_jump_label_transform(struct jump_entry *e, · 55 unmodified lines | |||
| 56 | * The branch offset must fit in the instruction's 26 | 56 | * The branch offset must fit in the instruction's 26 |
| 57 | * bit field. | 57 | * bit field. |
| 58 | */ | 58 | */ |
| 59 | WARN_ON((offset >= BIT(25)) || | 59 | WARN_ON((offset >= (long)BIT(25)) || |
| 60 | (offset < -(long)BIT(25))); | 60 | (offset < -(long)BIT(25))); |
| 61 | 61 | ||
| 62 | insn.j_format.opcode = bc6_op; | 62 | insn.j_format.opcode = bc6_op; |
| @@ -145,8 +145,7 @@ LEAF(kexec_smp_wait) · 144 unmodified lines | |||
| 145 | * kexec_args[0..3] are used to prepare register values. | 145 | * kexec_args[0..3] are used to prepare register values. |
| 146 | */ | 146 | */ |
| 147 | 147 | ||
| 148 | kexec_args: | 148 | EXPORT(kexec_args) |
| 149 | EXPORT(kexec_args) | ||
| 150 | arg0: PTR_WD 0x0 | 149 | arg0: PTR_WD 0x0 |
| 151 | arg1: PTR_WD 0x0 | 150 | arg1: PTR_WD 0x0 |
| 152 | arg2: PTR_WD 0x0 | 151 | arg2: PTR_WD 0x0 |
| @@ -159,8 +158,7 @@ arg3: PTR_WD 0x0 · 6 unmodified lines | |||
| 159 | * their registers a0-a3. secondary_kexec_args[0..3] are used | 158 | * their registers a0-a3. secondary_kexec_args[0..3] are used |
| 160 | * to prepare register values. | 159 | * to prepare register values. |
| 161 | */ | 160 | */ |
| 162 | secondary_kexec_args: | 161 | EXPORT(secondary_kexec_args) |
| 163 | EXPORT(secondary_kexec_args) | ||
| 164 | s_arg0: PTR_WD 0x0 | 162 | s_arg0: PTR_WD 0x0 |
| 165 | s_arg1: PTR_WD 0x0 | 163 | s_arg1: PTR_WD 0x0 |
| 166 | s_arg2: PTR_WD 0x0 | 164 | s_arg2: PTR_WD 0x0 |
| @@ -171,19 +169,16 @@ kexec_flag: · 4 unmodified lines | |||
| 171 | 169 | ||
| 172 | #endif | 170 | #endif |
| 173 | 171 | ||
| 174 | kexec_start_address: | 172 | EXPORT(kexec_start_address) |
| 175 | EXPORT(kexec_start_address) | ||
| 176 | PTR_WD 0x0 | 173 | PTR_WD 0x0 |
| 177 | .size kexec_start_address, PTRSIZE | 174 | .size kexec_start_address, PTRSIZE |
| 178 | 175 | ||
| 179 | kexec_indirection_page: | 176 | EXPORT(kexec_indirection_page) |
| 180 | EXPORT(kexec_indirection_page) | ||
| 181 | PTR_WD 0 | 177 | PTR_WD 0 |
| 182 | .size kexec_indirection_page, PTRSIZE | 178 | .size kexec_indirection_page, PTRSIZE |
| 183 | 179 | ||
| 184 | relocate_new_kernel_end: | 180 | relocate_new_kernel_end: |
| 185 | 181 | ||
| 186 | relocate_new_kernel_size: | 182 | EXPORT(relocate_new_kernel_size) |
| 187 | EXPORT(relocate_new_kernel_size) | ||
| 188 | PTR_WD relocate_new_kernel_end - relocate_new_kernel | 183 | PTR_WD relocate_new_kernel_end - relocate_new_kernel |
| 189 | .size relocate_new_kernel_size, PTRSIZE | 184 | .size relocate_new_kernel_size, PTRSIZE |
| @@ -16,6 +16,7 @@ · 15 unmodified lines | |||
| 16 | #include <asm/bootinfo.h> | 16 | #include <asm/bootinfo.h> |
| 17 | #include <asm/idle.h> | 17 | #include <asm/idle.h> |
| 18 | #include <asm/reboot.h> | 18 | #include <asm/reboot.h> |
| 19 | #include <asm/bug.h> | ||
| 19 | 20 | ||
| 20 | #include <loongson.h> | 21 | #include <loongson.h> |
| 21 | #include <boot_param.h> | 22 | #include <boot_param.h> |
| @@ -159,8 +160,17 @@ static int __init mips_reboot_setup(void) · 137 unmodified lines | |||
| 159 | 160 | ||
| 160 | #ifdef CONFIG_KEXEC | 161 | #ifdef CONFIG_KEXEC |
| 161 | kexec_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL); | 162 | kexec_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL); |
| 163 | if (WARN_ON(!kexec_argv)) | ||
| 164 | return -ENOMEM; | ||
| 165 | |||
| 162 | kdump_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL); | 166 | kdump_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL); |
| 167 | if (WARN_ON(!kdump_argv)) | ||
| 168 | return -ENOMEM; | ||
| 169 | |||
| 163 | kexec_envp = kmalloc(KEXEC_ENVP_SIZE, GFP_KERNEL); | 170 | kexec_envp = kmalloc(KEXEC_ENVP_SIZE, GFP_KERNEL); |
| 171 | if (WARN_ON(!kexec_envp)) | ||
| 172 | return -ENOMEM; | ||
| 173 | |||
| 164 | fw_arg1 = KEXEC_ARGV_ADDR; | 174 | fw_arg1 = KEXEC_ARGV_ADDR; |
| 165 | memcpy(kexec_envp, (void *)fw_arg2, KEXEC_ENVP_SIZE); | 175 | memcpy(kexec_envp, (void *)fw_arg2, KEXEC_ENVP_SIZE); |
| 166 | 176 | ||
| @@ -27,7 +27,7 @@ · 26 unmodified lines | |||
| 27 | #define U_BRG(x) (UART_BASE(x) + 0x40) | 27 | #define U_BRG(x) (UART_BASE(x) + 0x40) |
| 28 | 28 | ||
| 29 | static void __iomem *uart_base; | 29 | static void __iomem *uart_base; |
| 30 | static char console_port = -1; | 30 | static int console_port = -1; |
| 31 | 31 | ||
| 32 | static int __init configure_uart_pins(int port) | 32 | static int __init configure_uart_pins(int port) |
| 33 | { | 33 | { |
| @@ -47,7 +47,7 @@ static int __init configure_uart_pins(int port) · 13 unmodified lines | |||
| 47 | return 0; | 47 | return 0; |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | static void __init configure_uart(char port, int baud) | 50 | static void __init configure_uart(int port, int baud) |
| 51 | { | 51 | { |
| 52 | u32 pbclk; | 52 | u32 pbclk; |
| 53 | 53 | ||
| @@ -60,7 +60,7 @@ static void __init configure_uart(char port, int baud) · 6 unmodified lines | |||
| 60 | uart_base + PIC32_SET(U_STA(port))); | 60 | uart_base + PIC32_SET(U_STA(port))); |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | static void __init setup_early_console(char port, int baud) | 63 | static void __init setup_early_console(int port, int baud) |
| 64 | { | 64 | { |
| 65 | if (configure_uart_pins(port)) | 65 | if (configure_uart_pins(port)) |
| 66 | return; | 66 | return; |
| @@ -130,16 +130,15 @@ _out: · 63 unmodified lines | |||
| 130 | return baud; | 130 | return baud; |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | void __init fw_init_early_console(char port) | 133 | void __init fw_init_early_console(void) |
| 134 | { | 134 | { |
| 135 | char *arch_cmdline = pic32_getcmdline(); | 135 | char *arch_cmdline = pic32_getcmdline(); |
| 136 | int baud = -1; | 136 | int baud, port; |
| 137 | 137 | ||
| 138 | uart_base = ioremap(PIC32_BASE_UART, 0xc00); | 138 | uart_base = ioremap(PIC32_BASE_UART, 0xc00); |
| 139 | 139 | ||
| 140 | baud = get_baud_from_cmdline(arch_cmdline); | 140 | baud = get_baud_from_cmdline(arch_cmdline); |
| 141 | if (port == -1) | 141 | port = get_port_from_cmdline(arch_cmdline); |
| 142 | port = get_port_from_cmdline(arch_cmdline); | ||
| 143 | 142 | ||
| 144 | if (port == -1) | 143 | if (port == -1) |
| 145 | port = EARLY_CONSOLE_PORT; | 144 | port = EARLY_CONSOLE_PORT; |
| @@ -47,7 +47,7 @@ void __init plat_mem_setup(void) · 46 unmodified lines | |||
| 47 | strscpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE); | 47 | strscpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE); |
| 48 | 48 | ||
| 49 | #ifdef CONFIG_EARLY_PRINTK | 49 | #ifdef CONFIG_EARLY_PRINTK |
| 50 | fw_init_early_console(-1); | 50 | fw_init_early_console(); |
| 51 | #endif | 51 | #endif |
| 52 | pic32_config_init(); | 52 | pic32_config_init(); |
| 53 | } | 53 | } |
| @@ -3,6 +3,8 @@ · 2 unmodified lines | |||
| 3 | 3 | ||
| 4 | #include "fu540-c000.dtsi" | 4 | #include "fu540-c000.dtsi" |
| 5 | #include <dt-bindings/gpio/gpio.h> | 5 | #include <dt-bindings/gpio/gpio.h> |
| 6 | #include <dt-bindings/leds/common.h> | ||
| 7 | #include <dt-bindings/pwm/pwm.h> | ||
| 6 | 8 | ||
| 7 | /* Clock frequency (in Hz) of the PCB crystal for rtcclk */ | 9 | /* Clock frequency (in Hz) of the PCB crystal for rtcclk */ |
| 8 | #define RTCCLK_FREQ 1000000 | 10 | #define RTCCLK_FREQ 1000000 |
| @@ -42,6 +44,42 @@ · 33 unmodified lines | |||
| 42 | compatible = "gpio-restart"; | 44 | compatible = "gpio-restart"; |
| 43 | gpios = <&gpio 10 GPIO_ACTIVE_LOW>; | 45 | gpios = <&gpio 10 GPIO_ACTIVE_LOW>; |
| 44 | }; | 46 | }; |
| 47 | |||
| 48 | led-controller { | ||
| 49 | compatible = "pwm-leds"; | ||
| 50 | |||
| 51 | led-d1 { | ||
| 52 | pwms = <&pwm0 0 7812500 PWM_POLARITY_INVERTED>; | ||
| 53 | active-low; | ||
| 54 | color = <LED_COLOR_ID_GREEN>; | ||
| 55 | max-brightness = <255>; | ||
| 56 | label = "d1"; | ||
| 57 | }; | ||
| 58 | |||
| 59 | led-d2 { | ||
| 60 | pwms = <&pwm0 1 7812500 PWM_POLARITY_INVERTED>; | ||
| 61 | active-low; | ||
| 62 | color = <LED_COLOR_ID_GREEN>; | ||
| 63 | max-brightness = <255>; | ||
| 64 | label = "d2"; | ||
| 65 | }; | ||
| 66 | |||
| 67 | led-d3 { | ||
| 68 | pwms = <&pwm0 2 7812500 PWM_POLARITY_INVERTED>; | ||
| 69 | active-low; | ||
| 70 | color = <LED_COLOR_ID_GREEN>; | ||
| 71 | max-brightness = <255>; | ||
| 72 | label = "d3"; | ||
| 73 | }; | ||
| 74 | |||
| 75 | led-d4 { | ||
| 76 | pwms = <&pwm0 3 7812500 PWM_POLARITY_INVERTED>; | ||
| 77 | active-low; | ||
| 78 | color = <LED_COLOR_ID_GREEN>; | ||
| 79 | max-brightness = <255>; | ||
| 80 | label = "d4"; | ||
| 81 | }; | ||
| 82 | }; | ||
| 45 | }; | 83 | }; |
| 46 | 84 | ||
| 47 | &uart0 { | 85 | &uart0 { |
| @@ -164,6 +164,8 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) · 163 unmodified lines | |||
| 164 | unsigned long tls = args->tls; | 164 | unsigned long tls = args->tls; |
| 165 | struct pt_regs *childregs = task_pt_regs(p); | 165 | struct pt_regs *childregs = task_pt_regs(p); |
| 166 | 166 | ||
| 167 | memset(&p->thread.s, 0, sizeof(p->thread.s)); | ||
| 168 | |||
| 167 | /* p->thread holds context to be restored by __switch_to() */ | 169 | /* p->thread holds context to be restored by __switch_to() */ |
| 168 | if (unlikely(args->fn)) { | 170 | if (unlikely(args->fn)) { |
| 169 | /* Kernel thread */ | 171 | /* Kernel thread */ |
| @@ -283,6 +283,7 @@ void __init setup_arch(char **cmdline_p) · 282 unmodified lines | |||
| 283 | else | 283 | else |
| 284 | pr_err("No DTB found in kernel mappings\n"); | 284 | pr_err("No DTB found in kernel mappings\n"); |
| 285 | #endif | 285 | #endif |
| 286 | early_init_fdt_scan_reserved_mem(); | ||
| 286 | misc_mem_init(); | 287 | misc_mem_init(); |
| 287 | 288 | ||
| 288 | init_resources(); | 289 | init_resources(); |
| @@ -28,9 +28,12 @@ obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) · 27 unmodified lines | |||
| 28 | 28 | ||
| 29 | obj-y += vdso.o | 29 | obj-y += vdso.o |
| 30 | CPPFLAGS_vdso.lds += -P -C -U$(ARCH) | 30 | CPPFLAGS_vdso.lds += -P -C -U$(ARCH) |
| 31 | ifneq ($(filter vgettimeofday, $(vdso-syms)),) | ||
| 32 | CPPFLAGS_vdso.lds += -DHAS_VGETTIMEOFDAY | ||
| 33 | endif | ||
| 31 | 34 | ||
| 32 | # Disable -pg to prevent insert call site | 35 | # Disable -pg to prevent insert call site |
| 33 | CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os | 36 | CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) |
| 34 | 37 | ||
| 35 | # Disable profiling and instrumentation for VDSO code | 38 | # Disable profiling and instrumentation for VDSO code |
| 36 | GCOV_PROFILE := n | 39 | GCOV_PROFILE := n |
| @@ -68,9 +68,11 @@ VERSION · 67 unmodified lines | |||
| 68 | LINUX_4.15 { | 68 | LINUX_4.15 { |
| 69 | global: | 69 | global: |
| 70 | __vdso_rt_sigreturn; | 70 | __vdso_rt_sigreturn; |
| 71 | #ifdef HAS_VGETTIMEOFDAY | ||
| 71 | __vdso_gettimeofday; | 72 | __vdso_gettimeofday; |
| 72 | __vdso_clock_gettime; | 73 | __vdso_clock_gettime; |
| 73 | __vdso_clock_getres; | 74 | __vdso_clock_getres; |
| 75 | #endif | ||
| 74 | __vdso_getcpu; | 76 | __vdso_getcpu; |
| 75 | __vdso_flush_icache; | 77 | __vdso_flush_icache; |
| 76 | local: *; | 78 | local: *; |
| @@ -262,7 +262,6 @@ static void __init setup_bootmem(void) · 261 unmodified lines | |||
| 262 | memblock_reserve(dtb_early_pa, fdt_totalsize(dtb_early_va)); | 262 | memblock_reserve(dtb_early_pa, fdt_totalsize(dtb_early_va)); |
| 263 | } | 263 | } |
| 264 | 264 | ||
| 265 | early_init_fdt_scan_reserved_mem(); | ||
| 266 | dma_contiguous_reserve(dma32_phys_limit); | 265 | dma_contiguous_reserve(dma32_phys_limit); |
| 267 | if (IS_ENABLED(CONFIG_64BIT)) | 266 | if (IS_ENABLED(CONFIG_64BIT)) |
| 268 | hugetlb_cma_reserve(PUD_SHIFT - PAGE_SHIFT); | 267 | hugetlb_cma_reserve(PUD_SHIFT - PAGE_SHIFT); |
| @@ -568,8 +568,7 @@ config EXPOLINE_FULL · 567 unmodified lines | |||
| 568 | endchoice | 568 | endchoice |
| 569 | 569 | ||
| 570 | config RELOCATABLE | 570 | config RELOCATABLE |
| 571 | bool "Build a relocatable kernel" | 571 | def_bool y |
| 572 | default y | ||
| 573 | help | 572 | help |
| 574 | This builds a kernel image that retains relocation information | 573 | This builds a kernel image that retains relocation information |
| 575 | so it can be loaded at an arbitrary address. | 574 | so it can be loaded at an arbitrary address. |
| @@ -578,10 +577,11 @@ config RELOCATABLE · 2 unmodified lines | |||
| 578 | bootup process. | 577 | bootup process. |
| 579 | The relocations make the kernel image about 15% larger (compressed | 578 | The relocations make the kernel image about 15% larger (compressed |
| 580 | 10%), but are discarded at runtime. | 579 | 10%), but are discarded at runtime. |
| 580 | Note: this option exists only for documentation purposes, please do | ||
| 581 | not remove it. | ||
| 581 | 582 | ||
| 582 | config RANDOMIZE_BASE | 583 | config RANDOMIZE_BASE |
| 583 | bool "Randomize the address of the kernel image (KASLR)" | 584 | bool "Randomize the address of the kernel image (KASLR)" |
| 584 | depends on RELOCATABLE | ||
| 585 | default y | 585 | default y |
| 586 | help | 586 | help |
| 587 | In support of Kernel Address Space Layout Randomization (KASLR), | 587 | In support of Kernel Address Space Layout Randomization (KASLR), |
| @@ -14,10 +14,8 @@ KBUILD_AFLAGS_MODULE += -fPIC · 13 unmodified lines | |||
| 14 | KBUILD_CFLAGS_MODULE += -fPIC | 14 | KBUILD_CFLAGS_MODULE += -fPIC |
| 15 | KBUILD_AFLAGS += -m64 | 15 | KBUILD_AFLAGS += -m64 |
| 16 | KBUILD_CFLAGS += -m64 | 16 | KBUILD_CFLAGS += -m64 |
| 17 | ifeq ($(CONFIG_RELOCATABLE),y) | ||
| 18 | KBUILD_CFLAGS += -fPIE | 17 | KBUILD_CFLAGS += -fPIE |
| 19 | LDFLAGS_vmlinux := -pie | 18 | LDFLAGS_vmlinux := -pie |
| 20 | endif | ||
| 21 | aflags_dwarf := -Wa,-gdwarf-2 | 19 | aflags_dwarf := -Wa,-gdwarf-2 |
| 22 | KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__ | 20 | KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__ |
| 23 | ifndef CONFIG_AS_IS_LLVM | 21 | ifndef CONFIG_AS_IS_LLVM |
| @@ -37,9 +37,8 @@ CFLAGS_sclp_early_core.o += -I$(srctree)/drivers/s390/char · 36 unmodified lines | |||
| 37 | 37 | ||
| 38 | obj-y := head.o als.o startup.o mem_detect.o ipl_parm.o ipl_report.o | 38 | obj-y := head.o als.o startup.o mem_detect.o ipl_parm.o ipl_report.o |
| 39 | obj-y += string.o ebcdic.o sclp_early_core.o mem.o ipl_vmparm.o cmdline.o | 39 | 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 |
| 41 | obj-$(findstring y, $(CONFIG_PROTECTED_VIRTUALIZATION_GUEST) $(CONFIG_PGSTE)) += uv.o | 41 | obj-$(findstring y, $(CONFIG_PROTECTED_VIRTUALIZATION_GUEST) $(CONFIG_PGSTE)) += uv.o |
| 42 | obj-$(CONFIG_RELOCATABLE) += machine_kexec_reloc.o | ||
| 43 | obj-$(CONFIG_RANDOMIZE_BASE) += kaslr.o | 42 | obj-$(CONFIG_RANDOMIZE_BASE) += kaslr.o |
| 44 | obj-y += $(if $(CONFIG_KERNEL_UNCOMPRESSED),,decompressor.o) info.o | 43 | obj-y += $(if $(CONFIG_KERNEL_UNCOMPRESSED),,decompressor.o) info.o |
| 45 | obj-$(CONFIG_KERNEL_ZSTD) += clz_ctz.o | 44 | obj-$(CONFIG_KERNEL_ZSTD) += clz_ctz.o |
| @@ -291,8 +291,7 @@ void startup_kernel(void) · 290 unmodified lines | |||
| 291 | 291 | ||
| 292 | clear_bss_section(); | 292 | clear_bss_section(); |
| 293 | copy_bootdata(); | 293 | copy_bootdata(); |
| 294 | if (IS_ENABLED(CONFIG_RELOCATABLE)) | 294 | handle_relocs(__kaslr_offset); |
| 295 | handle_relocs(__kaslr_offset); | ||
| 296 | 295 | ||
| 297 | if (__kaslr_offset) { | 296 | if (__kaslr_offset) { |
| 298 | /* | 297 | /* |
| @@ -0,0 +1 @@ | |||
| 1 | CONFIG_DEBUG_INFO_BTF=y | ||
| @@ -723,52 +723,42 @@ CONFIG_CRYPTO_ECDSA=m · 722 unmodified lines | |||
| 723 | CONFIG_CRYPTO_ECRDSA=m | 723 | CONFIG_CRYPTO_ECRDSA=m |
| 724 | CONFIG_CRYPTO_SM2=m | 724 | CONFIG_CRYPTO_SM2=m |
| 725 | CONFIG_CRYPTO_CURVE25519=m | 725 | 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 | ||
| 753 | CONFIG_CRYPTO_AES_TI=m | 726 | CONFIG_CRYPTO_AES_TI=m |
| 754 | CONFIG_CRYPTO_AES_S390=m | ||
| 755 | CONFIG_CRYPTO_ANUBIS=m | 727 | CONFIG_CRYPTO_ANUBIS=m |
| 756 | CONFIG_CRYPTO_ARC4=m | 728 | CONFIG_CRYPTO_ARIA=m |
| 757 | CONFIG_CRYPTO_BLOWFISH=m | 729 | CONFIG_CRYPTO_BLOWFISH=m |
| 758 | CONFIG_CRYPTO_CAMELLIA=m | 730 | CONFIG_CRYPTO_CAMELLIA=m |
| 759 | CONFIG_CRYPTO_CAST5=m | 731 | CONFIG_CRYPTO_CAST5=m |
| 760 | CONFIG_CRYPTO_CAST6=m | 732 | CONFIG_CRYPTO_CAST6=m |
| 761 | CONFIG_CRYPTO_DES=m | 733 | CONFIG_CRYPTO_DES=m |
| 762 | CONFIG_CRYPTO_DES_S390=m | ||
| 763 | CONFIG_CRYPTO_FCRYPT=m | 734 | CONFIG_CRYPTO_FCRYPT=m |
| 764 | CONFIG_CRYPTO_KHAZAD=m | 735 | CONFIG_CRYPTO_KHAZAD=m |
| 765 | CONFIG_CRYPTO_CHACHA_S390=m | ||
| 766 | CONFIG_CRYPTO_SEED=m | 736 | CONFIG_CRYPTO_SEED=m |
| 767 | CONFIG_CRYPTO_ARIA=m | ||
| 768 | CONFIG_CRYPTO_SERPENT=m | 737 | CONFIG_CRYPTO_SERPENT=m |
| 769 | CONFIG_CRYPTO_SM4_GENERIC=m | 738 | CONFIG_CRYPTO_SM4_GENERIC=m |
| 770 | CONFIG_CRYPTO_TEA=m | 739 | CONFIG_CRYPTO_TEA=m |
| 771 | CONFIG_CRYPTO_TWOFISH=m | 740 | 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 | ||
| 772 | CONFIG_CRYPTO_842=m | 762 | CONFIG_CRYPTO_842=m |
| 773 | CONFIG_CRYPTO_LZ4=m | 763 | CONFIG_CRYPTO_LZ4=m |
| 774 | CONFIG_CRYPTO_LZ4HC=m | 764 | CONFIG_CRYPTO_LZ4HC=m |
| @@ -779,6 +769,16 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m · 4 unmodified lines | |||
| 779 | CONFIG_CRYPTO_USER_API_RNG=m | 769 | CONFIG_CRYPTO_USER_API_RNG=m |
| 780 | CONFIG_CRYPTO_USER_API_AEAD=m | 770 | CONFIG_CRYPTO_USER_API_AEAD=m |
| 781 | CONFIG_CRYPTO_STATS=y | 771 | 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 | ||
| 782 | CONFIG_ZCRYPT=m | 782 | CONFIG_ZCRYPT=m |
| 783 | CONFIG_PKEY=m | 783 | CONFIG_PKEY=m |
| 784 | CONFIG_CRYPTO_PAES_S390=m | 784 | CONFIG_CRYPTO_PAES_S390=m |
| @@ -797,7 +797,6 @@ CONFIG_CMA_SIZE_MBYTES=0 · 12 unmodified lines | |||
| 797 | CONFIG_PRINTK_TIME=y | 797 | CONFIG_PRINTK_TIME=y |
| 798 | CONFIG_DYNAMIC_DEBUG=y | 798 | CONFIG_DYNAMIC_DEBUG=y |
| 799 | CONFIG_DEBUG_INFO_DWARF4=y | 799 | CONFIG_DEBUG_INFO_DWARF4=y |
| 800 | CONFIG_DEBUG_INFO_BTF=y | ||
| 801 | CONFIG_GDB_SCRIPTS=y | 800 | CONFIG_GDB_SCRIPTS=y |
| 802 | CONFIG_HEADERS_INSTALL=y | 801 | CONFIG_HEADERS_INSTALL=y |
| 803 | CONFIG_DEBUG_SECTION_MISMATCH=y | 802 | CONFIG_DEBUG_SECTION_MISMATCH=y |
| @@ -707,53 +707,43 @@ CONFIG_CRYPTO_ECDSA=m · 706 unmodified lines | |||
| 707 | CONFIG_CRYPTO_ECRDSA=m | 707 | CONFIG_CRYPTO_ECRDSA=m |
| 708 | CONFIG_CRYPTO_SM2=m | 708 | CONFIG_CRYPTO_SM2=m |
| 709 | CONFIG_CRYPTO_CURVE25519=m | 709 | 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 | ||
| 738 | CONFIG_CRYPTO_AES_TI=m | 710 | CONFIG_CRYPTO_AES_TI=m |
| 739 | CONFIG_CRYPTO_AES_S390=m | ||
| 740 | CONFIG_CRYPTO_ANUBIS=m | 711 | CONFIG_CRYPTO_ANUBIS=m |
| 741 | CONFIG_CRYPTO_ARC4=m | 712 | CONFIG_CRYPTO_ARIA=m |
| 742 | CONFIG_CRYPTO_BLOWFISH=m | 713 | CONFIG_CRYPTO_BLOWFISH=m |
| 743 | CONFIG_CRYPTO_CAMELLIA=m | 714 | CONFIG_CRYPTO_CAMELLIA=m |
| 744 | CONFIG_CRYPTO_CAST5=m | 715 | CONFIG_CRYPTO_CAST5=m |
| 745 | CONFIG_CRYPTO_CAST6=m | 716 | CONFIG_CRYPTO_CAST6=m |
| 746 | CONFIG_CRYPTO_DES=m | 717 | CONFIG_CRYPTO_DES=m |
| 747 | CONFIG_CRYPTO_DES_S390=m | ||
| 748 | CONFIG_CRYPTO_FCRYPT=m | 718 | CONFIG_CRYPTO_FCRYPT=m |
| 749 | CONFIG_CRYPTO_KHAZAD=m | 719 | CONFIG_CRYPTO_KHAZAD=m |
| 750 | CONFIG_CRYPTO_CHACHA_S390=m | ||
| 751 | CONFIG_CRYPTO_SEED=m | 720 | CONFIG_CRYPTO_SEED=m |
| 752 | CONFIG_CRYPTO_ARIA=m | ||
| 753 | CONFIG_CRYPTO_SERPENT=m | 721 | CONFIG_CRYPTO_SERPENT=m |
| 754 | CONFIG_CRYPTO_SM4_GENERIC=m | 722 | CONFIG_CRYPTO_SM4_GENERIC=m |
| 755 | CONFIG_CRYPTO_TEA=m | 723 | CONFIG_CRYPTO_TEA=m |
| 756 | CONFIG_CRYPTO_TWOFISH=m | 724 | 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 | ||
| 757 | CONFIG_CRYPTO_842=m | 747 | CONFIG_CRYPTO_842=m |
| 758 | CONFIG_CRYPTO_LZ4=m | 748 | CONFIG_CRYPTO_LZ4=m |
| 759 | CONFIG_CRYPTO_LZ4HC=m | 749 | CONFIG_CRYPTO_LZ4HC=m |
| @@ -764,6 +754,16 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m · 4 unmodified lines | |||
| 764 | CONFIG_CRYPTO_USER_API_RNG=m | 754 | CONFIG_CRYPTO_USER_API_RNG=m |
| 765 | CONFIG_CRYPTO_USER_API_AEAD=m | 755 | CONFIG_CRYPTO_USER_API_AEAD=m |
| 766 | CONFIG_CRYPTO_STATS=y | 756 | 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 | ||
| 767 | CONFIG_ZCRYPT=m | 767 | CONFIG_ZCRYPT=m |
| 768 | CONFIG_PKEY=m | 768 | CONFIG_PKEY=m |
| 769 | CONFIG_CRYPTO_PAES_S390=m | 769 | CONFIG_CRYPTO_PAES_S390=m |
| @@ -781,7 +781,6 @@ CONFIG_CMA_SIZE_MBYTES=0 · 11 unmodified lines | |||
| 781 | CONFIG_PRINTK_TIME=y | 781 | CONFIG_PRINTK_TIME=y |
| 782 | CONFIG_DYNAMIC_DEBUG=y | 782 | CONFIG_DYNAMIC_DEBUG=y |
| 783 | CONFIG_DEBUG_INFO_DWARF4=y | 783 | CONFIG_DEBUG_INFO_DWARF4=y |
| 784 | CONFIG_DEBUG_INFO_BTF=y | ||
| 785 | CONFIG_GDB_SCRIPTS=y | 784 | CONFIG_GDB_SCRIPTS=y |
| 786 | CONFIG_DEBUG_SECTION_MISMATCH=y | 785 | CONFIG_DEBUG_SECTION_MISMATCH=y |
| 787 | CONFIG_MAGIC_SYSRQ=y | 786 | CONFIG_MAGIC_SYSRQ=y |
| @@ -0,0 +1,3 @@ | |||
| 1 | CONFIG_KASAN=y | ||
| 2 | CONFIG_KASAN_INLINE=y | ||
| 3 | CONFIG_KASAN_VMALLOC=y | ||
| @@ -74,7 +74,6 @@ CONFIG_PRINTK_TIME=y · 73 unmodified lines | |||
| 74 | # CONFIG_SYMBOLIC_ERRNAME is not set | 74 | # CONFIG_SYMBOLIC_ERRNAME is not set |
| 75 | CONFIG_DEBUG_KERNEL=y | 75 | CONFIG_DEBUG_KERNEL=y |
| 76 | CONFIG_DEBUG_INFO_DWARF4=y | 76 | CONFIG_DEBUG_INFO_DWARF4=y |
| 77 | CONFIG_DEBUG_INFO_BTF=y | ||
| 78 | CONFIG_DEBUG_FS=y | 77 | CONFIG_DEBUG_FS=y |
| 79 | CONFIG_PANIC_ON_OOPS=y | 78 | CONFIG_PANIC_ON_OOPS=y |
| 80 | # CONFIG_SCHED_DEBUG is not set | 79 | # CONFIG_SCHED_DEBUG is not set |
| @@ -1207,6 +1207,8 @@ static int kvm_s390_vm_get_migration(struct kvm *kvm, · 1206 unmodified lines | |||
| 1207 | return 0; | 1207 | return 0; |
| 1208 | } | 1208 | } |
| 1209 | 1209 | ||
| 1210 | static void __kvm_s390_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod); | ||
| 1211 | |||
| 1210 | static int kvm_s390_set_tod_ext(struct kvm *kvm, struct kvm_device_attr *attr) | 1212 | static int kvm_s390_set_tod_ext(struct kvm *kvm, struct kvm_device_attr *attr) |
| 1211 | { | 1213 | { |
| 1212 | struct kvm_s390_vm_tod_clock gtod; | 1214 | struct kvm_s390_vm_tod_clock gtod; |
| @@ -1216,7 +1218,7 @@ static int kvm_s390_set_tod_ext(struct kvm *kvm, struct kvm_device_attr *attr) · 3 unmodified lines | |||
| 1216 | 1218 | ||
| 1217 | if (!test_kvm_facility(kvm, 139) && gtod.epoch_idx) | 1219 | if (!test_kvm_facility(kvm, 139) && gtod.epoch_idx) |
| 1218 | return -EINVAL; | 1220 | return -EINVAL; |
| 1219 | kvm_s390_set_tod_clock(kvm, >od); | 1221 | __kvm_s390_set_tod_clock(kvm, >od); |
| 1220 | 1222 | ||
| 1221 | VM_EVENT(kvm, 3, "SET: TOD extension: 0x%x, TOD base: 0x%llx", | 1223 | VM_EVENT(kvm, 3, "SET: TOD extension: 0x%x, TOD base: 0x%llx", |
| 1222 | gtod.epoch_idx, gtod.tod); | 1224 | gtod.epoch_idx, gtod.tod); |
| @@ -1247,7 +1249,7 @@ static int kvm_s390_set_tod_low(struct kvm *kvm, struct kvm_device_attr *attr) · 24 unmodified lines | |||
| 1247 | sizeof(gtod.tod))) | 1249 | sizeof(gtod.tod))) |
| 1248 | return -EFAULT; | 1250 | return -EFAULT; |
| 1249 | 1251 | ||
| 1250 | kvm_s390_set_tod_clock(kvm, >od); | 1252 | __kvm_s390_set_tod_clock(kvm, >od); |
| 1251 | VM_EVENT(kvm, 3, "SET: TOD base: 0x%llx", gtod.tod); | 1253 | VM_EVENT(kvm, 3, "SET: TOD base: 0x%llx", gtod.tod); |
| 1252 | return 0; | 1254 | return 0; |
| 1253 | } | 1255 | } |
| @@ -1259,6 +1261,16 @@ static int kvm_s390_set_tod(struct kvm *kvm, struct kvm_device_attr *attr) · 5 unmodified lines | |||
| 1259 | if (attr->flags) | 1261 | if (attr->flags) |
| 1260 | return -EINVAL; | 1262 | return -EINVAL; |
| 1261 | 1263 | ||
| 1264 | mutex_lock(&kvm->lock); | ||
| 1265 | /* | ||
| 1266 | * For protected guests, the TOD is managed by the ultravisor, so trying | ||
| 1267 | * to change it will never bring the expected results. | ||
| 1268 | */ | ||
| 1269 | if (kvm_s390_pv_is_protected(kvm)) { | ||
| 1270 | ret = -EOPNOTSUPP; | ||
| 1271 | goto out_unlock; | ||
| 1272 | } | ||
| 1273 | |||
| 1262 | switch (attr->attr) { | 1274 | switch (attr->attr) { |
| 1263 | case KVM_S390_VM_TOD_EXT: | 1275 | case KVM_S390_VM_TOD_EXT: |
| 1264 | ret = kvm_s390_set_tod_ext(kvm, attr); | 1276 | ret = kvm_s390_set_tod_ext(kvm, attr); |
| @@ -1273,6 +1285,9 @@ static int kvm_s390_set_tod(struct kvm *kvm, struct kvm_device_attr *attr) · 8 unmodified lines | |||
| 1273 | ret = -ENXIO; | 1285 | ret = -ENXIO; |
| 1274 | break; | 1286 | break; |
| 1275 | } | 1287 | } |
| 1288 | |||
| 1289 | out_unlock: | ||
| 1290 | mutex_unlock(&kvm->lock); | ||
| 1276 | return ret; | 1291 | return ret; |
| 1277 | } | 1292 | } |
| 1278 | 1293 | ||
| @@ -4377,13 +4392,6 @@ static void __kvm_s390_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_t · 3098 unmodified lines | |||
| 4377 | preempt_enable(); | 4392 | preempt_enable(); |
| 4378 | } | 4393 | } |
| 4379 | 4394 | ||
| 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 | |||
| 4387 | int kvm_s390_try_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod) | 4395 | int kvm_s390_try_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod) |
| 4388 | { | 4396 | { |
| 4389 | if (!mutex_trylock(&kvm->lock)) | 4397 | if (!mutex_trylock(&kvm->lock)) |
| @@ -363,7 +363,6 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu); · 362 unmodified lines | |||
| 363 | int kvm_s390_handle_sigp_pei(struct kvm_vcpu *vcpu); | 363 | int kvm_s390_handle_sigp_pei(struct kvm_vcpu *vcpu); |
| 364 | 364 | ||
| 365 | /* implemented in kvm-s390.c */ | 365 | /* implemented in kvm-s390.c */ |
| 366 | void kvm_s390_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod); | ||
| 367 | int kvm_s390_try_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod); | 366 | int kvm_s390_try_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod); |
| 368 | long kvm_arch_fault_in_page(struct kvm_vcpu *vcpu, gpa_t gpa, int writable); | 367 | long kvm_arch_fault_in_page(struct kvm_vcpu *vcpu, gpa_t gpa, int writable); |
| 369 | int kvm_s390_store_status_unloaded(struct kvm_vcpu *vcpu, unsigned long addr); | 368 | int kvm_s390_store_status_unloaded(struct kvm_vcpu *vcpu, unsigned long addr); |
| @@ -126,7 +126,7 @@ int kvm_s390_pci_aen_init(u8 nisc) · 125 unmodified lines | |||
| 126 | return -EPERM; | 126 | return -EPERM; |
| 127 | 127 | ||
| 128 | mutex_lock(&aift->aift_lock); | 128 | mutex_lock(&aift->aift_lock); |
| 129 | aift->kzdev = kcalloc(ZPCI_NR_DEVICES, sizeof(struct kvm_zdev), | 129 | aift->kzdev = kcalloc(ZPCI_NR_DEVICES, sizeof(struct kvm_zdev *), |
| 130 | GFP_KERNEL); | 130 | GFP_KERNEL); |
| 131 | if (!aift->kzdev) { | 131 | if (!aift->kzdev) { |
| 132 | rc = -ENOMEM; | 132 | rc = -ENOMEM; |
| @@ -444,7 +444,7 @@ void __init hyperv_init(void) · 443 unmodified lines | |||
| 444 | 444 | ||
| 445 | if (hv_root_partition) { | 445 | if (hv_root_partition) { |
| 446 | struct page *pg; | 446 | struct page *pg; |
| 447 | void *src, *dst; | 447 | void *src; |
| 448 | 448 | ||
| 449 | /* | 449 | /* |
| 450 | * For the root partition, the hypervisor will set up its | 450 | * For the root partition, the hypervisor will set up its |
| @@ -459,13 +459,11 @@ void __init hyperv_init(void) · 8 unmodified lines | |||
| 459 | wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64); | 459 | wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64); |
| 460 | 460 | ||
| 461 | pg = vmalloc_to_page(hv_hypercall_pg); | 461 | pg = vmalloc_to_page(hv_hypercall_pg); |
| 462 | dst = kmap_local_page(pg); | ||
| 463 | src = memremap(hypercall_msr.guest_physical_address << PAGE_SHIFT, PAGE_SIZE, | 462 | src = memremap(hypercall_msr.guest_physical_address << PAGE_SHIFT, PAGE_SIZE, |
| 464 | MEMREMAP_WB); | 463 | MEMREMAP_WB); |
| 465 | BUG_ON(!(src && dst)); | 464 | BUG_ON(!src); |
| 466 | memcpy(dst, src, HV_HYP_PAGE_SIZE); | 465 | memcpy_to_page(pg, 0, src, HV_HYP_PAGE_SIZE); |
| 467 | memunmap(src); | 466 | memunmap(src); |
| 468 | kunmap_local(dst); | ||
| 469 | } else { | 467 | } else { |
| 470 | hypercall_msr.guest_physical_address = vmalloc_to_pfn(hv_hypercall_pg); | 468 | hypercall_msr.guest_physical_address = vmalloc_to_pfn(hv_hypercall_pg); |
| 471 | wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64); | 469 | wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64); |
| @@ -537,6 +535,7 @@ common_free: · 65 unmodified lines | |||
| 537 | void hyperv_cleanup(void) | 535 | void hyperv_cleanup(void) |
| 538 | { | 536 | { |
| 539 | union hv_x64_msr_hypercall_contents hypercall_msr; | 537 | union hv_x64_msr_hypercall_contents hypercall_msr; |
| 538 | union hv_reference_tsc_msr tsc_msr; | ||
| 540 | 539 | ||
| 541 | unregister_syscore_ops(&hv_syscore_ops); | 540 | unregister_syscore_ops(&hv_syscore_ops); |
| 542 | 541 | ||
| @@ -552,12 +551,14 @@ void hyperv_cleanup(void) · 9 unmodified lines | |||
| 552 | hv_hypercall_pg = NULL; | 551 | hv_hypercall_pg = NULL; |
| 553 | 552 | ||
| 554 | /* Reset the hypercall page */ | 553 | /* Reset the hypercall page */ |
| 555 | hypercall_msr.as_uint64 = 0; | 554 | hypercall_msr.as_uint64 = hv_get_register(HV_X64_MSR_HYPERCALL); |
| 556 | wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64); | 555 | hypercall_msr.enable = 0; |
| 556 | hv_set_register(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64); | ||
| 557 | 557 | ||
| 558 | /* Reset the TSC page */ | 558 | /* Reset the TSC page */ |
| 559 | hypercall_msr.as_uint64 = 0; | 559 | tsc_msr.as_uint64 = hv_get_register(HV_X64_MSR_REFERENCE_TSC); |
| 560 | wrmsrl(HV_X64_MSR_REFERENCE_TSC, hypercall_msr.as_uint64); | 560 | tsc_msr.enable = 0; |
| 561 | hv_set_register(HV_X64_MSR_REFERENCE_TSC, tsc_msr.as_uint64); | ||
| 561 | } | 562 | } |
| 562 | 563 | ||
| 563 | void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die) | 564 | void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die) |
| @@ -501,7 +501,12 @@ struct kvm_pmc { · 500 unmodified lines | |||
| 501 | bool intr; | 501 | bool intr; |
| 502 | }; | 502 | }; |
| 503 | 503 | ||
| 504 | /* More counters may conflict with other existing Architectural MSRs */ | ||
| 505 | #define KVM_INTEL_PMC_MAX_GENERIC 8 | ||
| 506 | #define MSR_ARCH_PERFMON_PERFCTR_MAX (MSR_ARCH_PERFMON_PERFCTR0 + KVM_INTEL_PMC_MAX_GENERIC - 1) | ||
| 507 | #define MSR_ARCH_PERFMON_EVENTSEL_MAX (MSR_ARCH_PERFMON_EVENTSEL0 + KVM_INTEL_PMC_MAX_GENERIC - 1) | ||
| 504 | #define KVM_PMC_MAX_FIXED 3 | 508 | #define KVM_PMC_MAX_FIXED 3 |
| 509 | #define KVM_AMD_PMC_MAX_GENERIC 6 | ||
| 505 | struct kvm_pmu { | 510 | struct kvm_pmu { |
| 506 | unsigned nr_arch_gp_counters; | 511 | unsigned nr_arch_gp_counters; |
| 507 | unsigned nr_arch_fixed_counters; | 512 | unsigned nr_arch_fixed_counters; |
| @@ -516,7 +521,7 @@ struct kvm_pmu { · 8 unmodified lines | |||
| 516 | u64 reserved_bits; | 521 | u64 reserved_bits; |
| 517 | u64 raw_event_mask; | 522 | u64 raw_event_mask; |
| 518 | u8 version; | 523 | u8 version; |
| 519 | struct kvm_pmc gp_counters[INTEL_PMC_MAX_GENERIC]; | 524 | struct kvm_pmc gp_counters[KVM_INTEL_PMC_MAX_GENERIC]; |
| 520 | struct kvm_pmc fixed_counters[KVM_PMC_MAX_FIXED]; | 525 | struct kvm_pmc fixed_counters[KVM_PMC_MAX_FIXED]; |
| 521 | struct irq_work irq_work; | 526 | struct irq_work irq_work; |
| 522 | DECLARE_BITMAP(reprogram_pmi, X86_PMC_IDX_MAX); | 527 | DECLARE_BITMAP(reprogram_pmi, X86_PMC_IDX_MAX); |
| @@ -13,7 +13,7 @@ · 12 unmodified lines | |||
| 13 | * Takes the guest view of SPEC_CTRL MSR as a parameter and also | 13 | * Takes the guest view of SPEC_CTRL MSR as a parameter and also |
| 14 | * the guest's version of VIRT_SPEC_CTRL, if emulated. | 14 | * the guest's version of VIRT_SPEC_CTRL, if emulated. |
| 15 | */ | 15 | */ |
| 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); |
| 17 | 17 | ||
| 18 | /** | 18 | /** |
| 19 | * x86_spec_ctrl_set_guest - Set speculation control registers for the guest | 19 | * x86_spec_ctrl_set_guest - Set speculation control registers for the guest |
| @@ -24,9 +24,9 @@ extern void x86_virt_spec_ctrl(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl, bo · 4 unmodified lines | |||
| 24 | * Avoids writing to the MSR if the content/bits are the same | 24 | * Avoids writing to the MSR if the content/bits are the same |
| 25 | */ | 25 | */ |
| 26 | static inline | 26 | 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) |
| 28 | { | 28 | { |
| 29 | x86_virt_spec_ctrl(guest_spec_ctrl, guest_virt_spec_ctrl, true); | 29 | x86_virt_spec_ctrl(guest_virt_spec_ctrl, true); |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | /** | 32 | /** |
| @@ -38,9 +38,9 @@ void x86_spec_ctrl_set_guest(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl) · 5 unmodified lines | |||
| 38 | * Avoids writing to the MSR if the content/bits are the same | 38 | * Avoids writing to the MSR if the content/bits are the same |
| 39 | */ | 39 | */ |
| 40 | static inline | 40 | 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) |
| 42 | { | 42 | { |
| 43 | x86_virt_spec_ctrl(guest_spec_ctrl, guest_virt_spec_ctrl, false); | 43 | x86_virt_spec_ctrl(guest_virt_spec_ctrl, false); |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | /* AMD specific Speculative Store Bypass MSR data */ | 46 | /* AMD specific Speculative Store Bypass MSR data */ |
| @@ -19,7 +19,6 @@ · 18 unmodified lines | |||
| 19 | #include <asm/suspend.h> | 19 | #include <asm/suspend.h> |
| 20 | #include <asm/tlbflush.h> | 20 | #include <asm/tlbflush.h> |
| 21 | #include <asm/tdx.h> | 21 | #include <asm/tdx.h> |
| 22 | #include "../kvm/vmx/vmx.h" | ||
| 23 | 22 | ||
| 24 | #ifdef CONFIG_XEN | 23 | #ifdef CONFIG_XEN |
| 25 | #include <xen/interface/xen.h> | 24 | #include <xen/interface/xen.h> |
| @@ -108,9 +107,4 @@ static void __used common(void) · 82 unmodified lines | |||
| 108 | OFFSET(TSS_sp0, tss_struct, x86_tss.sp0); | 107 | OFFSET(TSS_sp0, tss_struct, x86_tss.sp0); |
| 109 | OFFSET(TSS_sp1, tss_struct, x86_tss.sp1); | 108 | OFFSET(TSS_sp1, tss_struct, x86_tss.sp1); |
| 110 | OFFSET(TSS_sp2, tss_struct, x86_tss.sp2); | 109 | OFFSET(TSS_sp2, tss_struct, x86_tss.sp2); |
| 111 | |||
| 112 | if (IS_ENABLED(CONFIG_KVM_INTEL)) { | ||
| 113 | BLANK(); | ||
| 114 | OFFSET(VMX_spec_ctrl, vcpu_vmx, spec_ctrl); | ||
| 115 | } | ||
| 116 | } | 110 | } |
| @@ -196,22 +196,15 @@ void __init check_bugs(void) · 195 unmodified lines | |||
| 196 | } | 196 | } |
| 197 | 197 | ||
| 198 | /* | 198 | /* |
| 199 | * NOTE: This function is *only* called for SVM. VMX spec_ctrl handling is | 199 | * NOTE: This function is *only* called for SVM, since Intel uses |
| 200 | * done in vmenter.S. | 200 | * MSR_IA32_SPEC_CTRL for SSBD. |
| 201 | */ | 201 | */ |
| 202 | void | 202 | 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) |
| 204 | { | 204 | { |
| 205 | u64 msrval, guestval = guest_spec_ctrl, hostval = spec_ctrl_current(); | 205 | u64 guestval, hostval; |
| 206 | struct thread_info *ti = current_thread_info(); | 206 | struct thread_info *ti = current_thread_info(); |
| 207 | 207 | ||
| 208 | if (static_cpu_has(X86_FEATURE_MSR_SPEC_CTRL)) { | ||
| 209 | if (hostval != guestval) { | ||
| 210 | msrval = setguest ? guestval : hostval; | ||
| 211 | wrmsrl(MSR_IA32_SPEC_CTRL, msrval); | ||
| 212 | } | ||
| 213 | } | ||
| 214 | |||
| 215 | /* | 208 | /* |
| 216 | * If SSBD is not handled in MSR_SPEC_CTRL on AMD, update | 209 | * If SSBD is not handled in MSR_SPEC_CTRL on AMD, update |
| 217 | * MSR_AMD64_L2_CFG or MSR_VIRT_SPEC_CTRL if supported. | 210 | * MSR_AMD64_L2_CFG or MSR_VIRT_SPEC_CTRL if supported. |
| @@ -15,6 +15,7 @@ · 14 unmodified lines | |||
| 15 | #include <linux/context_tracking.h> | 15 | #include <linux/context_tracking.h> |
| 16 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
| 17 | #include <linux/kallsyms.h> | 17 | #include <linux/kallsyms.h> |
| 18 | #include <linux/kmsan.h> | ||
| 18 | #include <linux/spinlock.h> | 19 | #include <linux/spinlock.h> |
| 19 | #include <linux/kprobes.h> | 20 | #include <linux/kprobes.h> |
| 20 | #include <linux/uaccess.h> | 21 | #include <linux/uaccess.h> |
| @@ -301,6 +302,12 @@ static noinstr bool handle_bug(struct pt_regs *regs) · 280 unmodified lines | |||
| 301 | { | 302 | { |
| 302 | bool handled = false; | 303 | bool handled = false; |
| 303 | 304 | ||
| 305 | /* | ||
| 306 | * Normally @regs are unpoisoned by irqentry_enter(), but handle_bug() | ||
| 307 | * is a rare case that uses @regs without passing them to | ||
| 308 | * irqentry_enter(). | ||
| 309 | */ | ||
| 310 | kmsan_unpoison_entry_regs(regs); | ||
| 304 | if (!is_valid_bugaddr(regs->ip)) | 311 | if (!is_valid_bugaddr(regs->ip)) |
| 305 | return handled; | 312 | return handled; |
| 306 | 313 | ||
| @@ -0,0 +1,2 @@ | |||
| 1 | /kvm-asm-offsets.s | ||
| 2 | /kvm-asm-offsets.h | ||
| @@ -34,3 +34,15 @@ endif · 33 unmodified lines | |||
| 34 | obj-$(CONFIG_KVM) += kvm.o | 34 | obj-$(CONFIG_KVM) += kvm.o |
| 35 | obj-$(CONFIG_KVM_INTEL) += kvm-intel.o | 35 | obj-$(CONFIG_KVM_INTEL) += kvm-intel.o |
| 36 | obj-$(CONFIG_KVM_AMD) += kvm-amd.o | 36 | 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 | ||
| @@ -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 | } | ||
| @@ -6056,7 +6056,7 @@ void kvm_zap_gfn_range(struct kvm *kvm, gfn_t gfn_start, gfn_t gfn_end) · 6055 unmodified lines | |||
| 6056 | 6056 | ||
| 6057 | write_lock(&kvm->mmu_lock); | 6057 | write_lock(&kvm->mmu_lock); |
| 6058 | 6058 | ||
| 6059 | kvm_mmu_invalidate_begin(kvm, gfn_start, gfn_end); | 6059 | kvm_mmu_invalidate_begin(kvm, 0, -1ul); |
| 6060 | 6060 | ||
| 6061 | flush = kvm_rmap_zap_gfn_range(kvm, gfn_start, gfn_end); | 6061 | flush = kvm_rmap_zap_gfn_range(kvm, gfn_start, gfn_end); |
| 6062 | 6062 | ||
| @@ -6070,7 +6070,7 @@ void kvm_zap_gfn_range(struct kvm *kvm, gfn_t gfn_start, gfn_t gfn_end) · 7 unmodified lines | |||
| 6070 | kvm_flush_remote_tlbs_with_address(kvm, gfn_start, | 6070 | kvm_flush_remote_tlbs_with_address(kvm, gfn_start, |
| 6071 | gfn_end - gfn_start); | 6071 | gfn_end - gfn_start); |
| 6072 | 6072 | ||
| 6073 | kvm_mmu_invalidate_end(kvm, gfn_start, gfn_end); | 6073 | kvm_mmu_invalidate_end(kvm, 0, -1ul); |
| 6074 | 6074 | ||
| 6075 | write_unlock(&kvm->mmu_lock); | 6075 | write_unlock(&kvm->mmu_lock); |
| 6076 | } | 6076 | } |
| @@ -56,7 +56,7 @@ static const struct x86_cpu_id vmx_icl_pebs_cpu[] = { · 55 unmodified lines | |||
| 56 | * code. Each pmc, stored in kvm_pmc.idx field, is unique across | 56 | * code. Each pmc, stored in kvm_pmc.idx field, is unique across |
| 57 | * all perf counters (both gp and fixed). The mapping relationship | 57 | * all perf counters (both gp and fixed). The mapping relationship |
| 58 | * between pmc and perf counters is as the following: | 58 | * between pmc and perf counters is as the following: |
| 59 | * * Intel: [0 .. INTEL_PMC_MAX_GENERIC-1] <=> gp counters | 59 | * * Intel: [0 .. KVM_INTEL_PMC_MAX_GENERIC-1] <=> gp counters |
| 60 | * [INTEL_PMC_IDX_FIXED .. INTEL_PMC_IDX_FIXED + 2] <=> fixed | 60 | * [INTEL_PMC_IDX_FIXED .. INTEL_PMC_IDX_FIXED + 2] <=> fixed |
| 61 | * * AMD: [0 .. AMD64_NUM_COUNTERS-1] and, for families 15H | 61 | * * AMD: [0 .. AMD64_NUM_COUNTERS-1] and, for families 15H |
| 62 | * and later, [0 .. AMD64_NUM_COUNTERS_CORE-1] <=> gp counters | 62 | * and later, [0 .. AMD64_NUM_COUNTERS_CORE-1] <=> gp counters |
| @@ -192,9 +192,10 @@ static void amd_pmu_init(struct kvm_vcpu *vcpu) · 191 unmodified lines | |||
| 192 | struct kvm_pmu *pmu = vcpu_to_pmu(vcpu); | 192 | struct kvm_pmu *pmu = vcpu_to_pmu(vcpu); |
| 193 | int i; | 193 | int i; |
| 194 | 194 | ||
| 195 | BUILD_BUG_ON(AMD64_NUM_COUNTERS_CORE > INTEL_PMC_MAX_GENERIC); | 195 | BUILD_BUG_ON(KVM_AMD_PMC_MAX_GENERIC > AMD64_NUM_COUNTERS_CORE); |
| 196 | BUILD_BUG_ON(KVM_AMD_PMC_MAX_GENERIC > INTEL_PMC_MAX_GENERIC); | ||
| 196 | 197 | ||
| 197 | for (i = 0; i < AMD64_NUM_COUNTERS_CORE ; i++) { | 198 | for (i = 0; i < KVM_AMD_PMC_MAX_GENERIC ; i++) { |
| 198 | pmu->gp_counters[i].type = KVM_PMC_GP; | 199 | pmu->gp_counters[i].type = KVM_PMC_GP; |
| 199 | pmu->gp_counters[i].vcpu = vcpu; | 200 | pmu->gp_counters[i].vcpu = vcpu; |
| 200 | pmu->gp_counters[i].idx = i; | 201 | pmu->gp_counters[i].idx = i; |
| @@ -207,7 +208,7 @@ static void amd_pmu_reset(struct kvm_vcpu *vcpu) · 6 unmodified lines | |||
| 207 | struct kvm_pmu *pmu = vcpu_to_pmu(vcpu); | 208 | struct kvm_pmu *pmu = vcpu_to_pmu(vcpu); |
| 208 | int i; | 209 | int i; |
| 209 | 210 | ||
| 210 | for (i = 0; i < AMD64_NUM_COUNTERS_CORE; i++) { | 211 | for (i = 0; i < KVM_AMD_PMC_MAX_GENERIC; i++) { |
| 211 | struct kvm_pmc *pmc = &pmu->gp_counters[i]; | 212 | struct kvm_pmc *pmc = &pmu->gp_counters[i]; |
| 212 | 213 | ||
| 213 | pmc_stop_counter(pmc); | 214 | pmc_stop_counter(pmc); |
| @@ -196,7 +196,7 @@ static void sev_asid_free(struct kvm_sev_info *sev) · 195 unmodified lines | |||
| 196 | __set_bit(sev->asid, sev_reclaim_asid_bitmap); | 196 | __set_bit(sev->asid, sev_reclaim_asid_bitmap); |
| 197 | 197 | ||
| 198 | for_each_possible_cpu(cpu) { | 198 | for_each_possible_cpu(cpu) { |
| 199 | sd = per_cpu(svm_data, cpu); | 199 | sd = per_cpu_ptr(&svm_data, cpu); |
| 200 | sd->sev_vmcbs[sev->asid] = NULL; | 200 | sd->sev_vmcbs[sev->asid] = NULL; |
| 201 | } | 201 | } |
| 202 | 202 | ||
| @@ -605,7 +605,7 @@ static int sev_es_sync_vmsa(struct vcpu_svm *svm) · 402 unmodified lines | |||
| 605 | save->dr6 = svm->vcpu.arch.dr6; | 605 | save->dr6 = svm->vcpu.arch.dr6; |
| 606 | 606 | ||
| 607 | pr_debug("Virtual Machine Save Area (VMSA):\n"); | 607 | pr_debug("Virtual Machine Save Area (VMSA):\n"); |
| 608 | print_hex_dump(KERN_CONT, "", DUMP_PREFIX_NONE, 16, 1, save, sizeof(*save), false); | 608 | print_hex_dump_debug("", DUMP_PREFIX_NONE, 16, 1, save, sizeof(*save), false); |
| 609 | 609 | ||
| 610 | return 0; | 610 | return 0; |
| 611 | } | 611 | } |
| @@ -2600,7 +2600,7 @@ void sev_es_unmap_ghcb(struct vcpu_svm *svm) · 1988 unmodified lines | |||
| 2600 | 2600 | ||
| 2601 | void pre_sev_run(struct vcpu_svm *svm, int cpu) | 2601 | void pre_sev_run(struct vcpu_svm *svm, int cpu) |
| 2602 | { | 2602 | { |
| 2603 | struct svm_cpu_data *sd = per_cpu(svm_data, cpu); | 2603 | struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, cpu); |
| 2604 | int asid = sev_get_asid(svm->vcpu.kvm); | 2604 | int asid = sev_get_asid(svm->vcpu.kvm); |
| 2605 | 2605 | ||
| 2606 | /* Assign the asid allocated with this SEV guest */ | 2606 | /* Assign the asid allocated with this SEV guest */ |
| @@ -245,7 +245,7 @@ struct kvm_ldttss_desc { · 244 unmodified lines | |||
| 245 | u32 zero1; | 245 | u32 zero1; |
| 246 | } __attribute__((packed)); | 246 | } __attribute__((packed)); |
| 247 | 247 | ||
| 248 | DEFINE_PER_CPU(struct svm_cpu_data *, svm_data); | 248 | DEFINE_PER_CPU(struct svm_cpu_data, svm_data); |
| 249 | 249 | ||
| 250 | /* | 250 | /* |
| 251 | * Only MSR_TSC_AUX is switched via the user return hook. EFER is switched via | 251 | * Only MSR_TSC_AUX is switched via the user return hook. EFER is switched via |
| @@ -581,12 +581,7 @@ static int svm_hardware_enable(void) · 329 unmodified lines | |||
| 581 | pr_err("%s: err EOPNOTSUPP on %d\n", __func__, me); | 581 | pr_err("%s: err EOPNOTSUPP on %d\n", __func__, me); |
| 582 | return -EINVAL; | 582 | return -EINVAL; |
| 583 | } | 583 | } |
| 584 | sd = per_cpu(svm_data, me); | 584 | sd = per_cpu_ptr(&svm_data, me); |
| 585 | if (!sd) { | ||
| 586 | pr_err("%s: svm_data is NULL on %d\n", __func__, me); | ||
| 587 | return -EINVAL; | ||
| 588 | } | ||
| 589 | |||
| 590 | sd->asid_generation = 1; | 585 | sd->asid_generation = 1; |
| 591 | sd->max_asid = cpuid_ebx(SVM_CPUID_FUNC) - 1; | 586 | sd->max_asid = cpuid_ebx(SVM_CPUID_FUNC) - 1; |
| 592 | sd->next_asid = sd->max_asid + 1; | 587 | sd->next_asid = sd->max_asid + 1; |
| @@ -597,7 +592,7 @@ static int svm_hardware_enable(void) · 4 unmodified lines | |||
| 597 | 592 | ||
| 598 | wrmsrl(MSR_EFER, efer | EFER_SVME); | 593 | wrmsrl(MSR_EFER, efer | EFER_SVME); |
| 599 | 594 | ||
| 600 | wrmsrl(MSR_VM_HSAVE_PA, __sme_page_pa(sd->save_area)); | 595 | wrmsrl(MSR_VM_HSAVE_PA, sd->save_area_pa); |
| 601 | 596 | ||
| 602 | if (static_cpu_has(X86_FEATURE_TSCRATEMSR)) { | 597 | if (static_cpu_has(X86_FEATURE_TSCRATEMSR)) { |
| 603 | /* | 598 | /* |
| @@ -646,42 +641,37 @@ static int svm_hardware_enable(void) · 42 unmodified lines | |||
| 646 | 641 | ||
| 647 | static void svm_cpu_uninit(int cpu) | 642 | static void svm_cpu_uninit(int cpu) |
| 648 | { | 643 | { |
| 649 | struct svm_cpu_data *sd = per_cpu(svm_data, cpu); | 644 | struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, cpu); |
| 650 | 645 | ||
| 651 | if (!sd) | 646 | if (!sd->save_area) |
| 652 | return; | 647 | return; |
| 653 | 648 | ||
| 654 | per_cpu(svm_data, cpu) = NULL; | ||
| 655 | kfree(sd->sev_vmcbs); | 649 | kfree(sd->sev_vmcbs); |
| 656 | __free_page(sd->save_area); | 650 | __free_page(sd->save_area); |
| 657 | kfree(sd); | 651 | sd->save_area_pa = 0; |
| 652 | sd->save_area = NULL; | ||
| 658 | } | 653 | } |
| 659 | 654 | ||
| 660 | static int svm_cpu_init(int cpu) | 655 | static int svm_cpu_init(int cpu) |
| 661 | { | 656 | { |
| 662 | struct svm_cpu_data *sd; | 657 | struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, cpu); |
| 663 | int ret = -ENOMEM; | 658 | int ret = -ENOMEM; |
| 664 | 659 | ||
| 665 | sd = kzalloc(sizeof(struct svm_cpu_data), GFP_KERNEL); | 660 | memset(sd, 0, sizeof(struct svm_cpu_data)); |
| 666 | if (!sd) | ||
| 667 | return ret; | ||
| 668 | sd->cpu = cpu; | ||
| 669 | sd->save_area = alloc_page(GFP_KERNEL | __GFP_ZERO); | 661 | sd->save_area = alloc_page(GFP_KERNEL | __GFP_ZERO); |
| 670 | if (!sd->save_area) | 662 | if (!sd->save_area) |
| 671 | goto free_cpu_data; | 663 | return ret; |
| 672 | 664 | ||
| 673 | ret = sev_cpu_init(sd); | 665 | ret = sev_cpu_init(sd); |
| 674 | if (ret) | 666 | if (ret) |
| 675 | goto free_save_area; | 667 | goto free_save_area; |
| 676 | 668 | ||
| 677 | per_cpu(svm_data, cpu) = sd; | 669 | sd->save_area_pa = __sme_page_pa(sd->save_area); |
| 678 | |||
| 679 | return 0; | 670 | return 0; |
| 680 | 671 | ||
| 681 | free_save_area: | 672 | free_save_area: |
| 682 | __free_page(sd->save_area); | 673 | __free_page(sd->save_area); |
| 683 | free_cpu_data: | 674 | sd->save_area = NULL; |
| 684 | kfree(sd); | ||
| 685 | return ret; | 675 | return ret; |
| 686 | 676 | ||
| 687 | } | 677 | } |
| @@ -730,6 +720,15 @@ static bool msr_write_intercepted(struct kvm_vcpu *vcpu, u32 msr) · 42 unmodified lines | |||
| 730 | u32 offset; | 720 | u32 offset; |
| 731 | u32 *msrpm; | 721 | u32 *msrpm; |
| 732 | 722 | ||
| 723 | /* | ||
| 724 | * For non-nested case: | ||
| 725 | * If the L01 MSR bitmap does not intercept the MSR, then we need to | ||
| 726 | * save it. | ||
| 727 | * | ||
| 728 | * For nested case: | ||
| 729 | * If the L02 MSR bitmap does not intercept the MSR, then we need to | ||
| 730 | * save it. | ||
| 731 | */ | ||
| 733 | msrpm = is_guest_mode(vcpu) ? to_svm(vcpu)->nested.msrpm: | 732 | msrpm = is_guest_mode(vcpu) ? to_svm(vcpu)->nested.msrpm: |
| 734 | to_svm(vcpu)->msrpm; | 733 | to_svm(vcpu)->msrpm; |
| 735 | 734 | ||
| @@ -1425,7 +1424,7 @@ static void svm_clear_current_vmcb(struct vmcb *vmcb) · 689 unmodified lines | |||
| 1425 | int i; | 1424 | int i; |
| 1426 | 1425 | ||
| 1427 | for_each_online_cpu(i) | 1426 | for_each_online_cpu(i) |
| 1428 | cmpxchg(&per_cpu(svm_data, i)->current_vmcb, vmcb, NULL); | 1427 | cmpxchg(per_cpu_ptr(&svm_data.current_vmcb, i), vmcb, NULL); |
| 1429 | } | 1428 | } |
| 1430 | 1429 | ||
| 1431 | static void svm_vcpu_free(struct kvm_vcpu *vcpu) | 1430 | 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 | |||
| 1450 | static void svm_prepare_switch_to_guest(struct kvm_vcpu *vcpu) | 1449 | static void svm_prepare_switch_to_guest(struct kvm_vcpu *vcpu) |
| 1451 | { | 1450 | { |
| 1452 | struct vcpu_svm *svm = to_svm(vcpu); | 1451 | struct vcpu_svm *svm = to_svm(vcpu); |
| 1453 | struct svm_cpu_data *sd = per_cpu(svm_data, vcpu->cpu); | 1452 | struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, vcpu->cpu); |
| 1454 | 1453 | ||
| 1455 | if (sev_es_guest(vcpu->kvm)) | 1454 | if (sev_es_guest(vcpu->kvm)) |
| 1456 | sev_es_unmap_ghcb(svm); | 1455 | sev_es_unmap_ghcb(svm); |
| @@ -1462,7 +1461,7 @@ static void svm_prepare_switch_to_guest(struct kvm_vcpu *vcpu) · 5 unmodified lines | |||
| 1462 | * Save additional host state that will be restored on VMEXIT (sev-es) | 1461 | * Save additional host state that will be restored on VMEXIT (sev-es) |
| 1463 | * or subsequent vmload of host save area. | 1462 | * or subsequent vmload of host save area. |
| 1464 | */ | 1463 | */ |
| 1465 | vmsave(__sme_page_pa(sd->save_area)); | 1464 | vmsave(sd->save_area_pa); |
| 1466 | if (sev_es_guest(vcpu->kvm)) { | 1465 | if (sev_es_guest(vcpu->kvm)) { |
| 1467 | struct sev_es_save_area *hostsa; | 1466 | struct sev_es_save_area *hostsa; |
| 1468 | hostsa = (struct sev_es_save_area *)(page_address(sd->save_area) + 0x400); | 1467 | hostsa = (struct sev_es_save_area *)(page_address(sd->save_area) + 0x400); |
| @@ -1487,7 +1486,7 @@ static void svm_prepare_host_switch(struct kvm_vcpu *vcpu) · 18 unmodified lines | |||
| 1487 | static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu) | 1486 | static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu) |
| 1488 | { | 1487 | { |
| 1489 | struct vcpu_svm *svm = to_svm(vcpu); | 1488 | struct vcpu_svm *svm = to_svm(vcpu); |
| 1490 | struct svm_cpu_data *sd = per_cpu(svm_data, cpu); | 1489 | struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, cpu); |
| 1491 | 1490 | ||
| 1492 | if (sd->current_vmcb != svm->vmcb) { | 1491 | if (sd->current_vmcb != svm->vmcb) { |
| 1493 | sd->current_vmcb = svm->vmcb; | 1492 | sd->current_vmcb = svm->vmcb; |
| @@ -3443,7 +3442,7 @@ static int svm_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) · 1949 unmodified lines | |||
| 3443 | 3442 | ||
| 3444 | static void reload_tss(struct kvm_vcpu *vcpu) | 3443 | static void reload_tss(struct kvm_vcpu *vcpu) |
| 3445 | { | 3444 | { |
| 3446 | struct svm_cpu_data *sd = per_cpu(svm_data, vcpu->cpu); | 3445 | struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, vcpu->cpu); |
| 3447 | 3446 | ||
| 3448 | sd->tss_desc->type = 9; /* available 32/64-bit TSS */ | 3447 | sd->tss_desc->type = 9; /* available 32/64-bit TSS */ |
| 3449 | load_TR_desc(); | 3448 | load_TR_desc(); |
| @@ -3451,7 +3450,7 @@ static void reload_tss(struct kvm_vcpu *vcpu) · 1 unmodified line | |||
| 3451 | 3450 | ||
| 3452 | static void pre_svm_run(struct kvm_vcpu *vcpu) | 3451 | static void pre_svm_run(struct kvm_vcpu *vcpu) |
| 3453 | { | 3452 | { |
| 3454 | struct svm_cpu_data *sd = per_cpu(svm_data, vcpu->cpu); | 3453 | struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, vcpu->cpu); |
| 3455 | struct vcpu_svm *svm = to_svm(vcpu); | 3454 | struct vcpu_svm *svm = to_svm(vcpu); |
| 3456 | 3455 | ||
| 3457 | /* | 3456 | /* |
| @@ -3911,30 +3910,16 @@ static fastpath_t svm_exit_handlers_fastpath(struct kvm_vcpu *vcpu) · 453 unmodified lines | |||
| 3911 | return EXIT_FASTPATH_NONE; | 3910 | return EXIT_FASTPATH_NONE; |
| 3912 | } | 3911 | } |
| 3913 | 3912 | ||
| 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) |
| 3915 | { | 3914 | { |
| 3916 | struct vcpu_svm *svm = to_svm(vcpu); | 3915 | struct vcpu_svm *svm = to_svm(vcpu); |
| 3917 | unsigned long vmcb_pa = svm->current_vmcb->pa; | ||
| 3918 | 3916 | ||
| 3919 | guest_state_enter_irqoff(); | 3917 | guest_state_enter_irqoff(); |
| 3920 | 3918 | ||
| 3921 | if (sev_es_guest(vcpu->kvm)) { | 3919 | if (sev_es_guest(vcpu->kvm)) |
| 3922 | __svm_sev_es_vcpu_run(vmcb_pa); | 3920 | __svm_sev_es_vcpu_run(svm, spec_ctrl_intercepted); |
| 3923 | } else { | 3921 | else |
| 3924 | struct svm_cpu_data *sd = per_cpu(svm_data, vcpu->cpu); | 3922 | __svm_vcpu_run(svm, spec_ctrl_intercepted); |
| 3925 | |||
| 3926 | /* | ||
| 3927 | * Use a single vmcb (vmcb01 because it's always valid) for | ||
| 3928 | * context switching guest state via VMLOAD/VMSAVE, that way | ||
| 3929 | * the state doesn't need to be copied between vmcb01 and | ||
| 3930 | * vmcb02 when switching vmcbs for nested virtualization. | ||
| 3931 | */ | ||
| 3932 | vmload(svm->vmcb01.pa); | ||
| 3933 | __svm_vcpu_run(vmcb_pa, (unsigned long *)&vcpu->arch.regs); | ||
| 3934 | vmsave(svm->vmcb01.pa); | ||
| 3935 | |||
| 3936 | vmload(__sme_page_pa(sd->save_area)); | ||
| 3937 | } | ||
| 3938 | 3923 | ||
| 3939 | guest_state_exit_irqoff(); | 3924 | guest_state_exit_irqoff(); |
| 3940 | } | 3925 | } |
| @@ -3942,6 +3927,7 @@ static noinstr void svm_vcpu_enter_exit(struct kvm_vcpu *vcpu) · 1 unmodified line | |||
| 3942 | static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) | 3927 | static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) |
| 3943 | { | 3928 | { |
| 3944 | struct vcpu_svm *svm = to_svm(vcpu); | 3929 | struct vcpu_svm *svm = to_svm(vcpu); |
| 3930 | bool spec_ctrl_intercepted = msr_write_intercepted(vcpu, MSR_IA32_SPEC_CTRL); | ||
| 3945 | 3931 | ||
| 3946 | trace_kvm_entry(vcpu); | 3932 | trace_kvm_entry(vcpu); |
| 3947 | 3933 | ||
| @@ -3998,34 +3984,15 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) · 50 unmodified lines | |||
| 3998 | * being speculatively taken. | 3984 | * being speculatively taken. |
| 3999 | */ | 3985 | */ |
| 4000 | if (!static_cpu_has(X86_FEATURE_V_SPEC_CTRL)) | 3986 | if (!static_cpu_has(X86_FEATURE_V_SPEC_CTRL)) |
| 4001 | x86_spec_ctrl_set_guest(svm->spec_ctrl, svm->virt_spec_ctrl); | 3987 | x86_spec_ctrl_set_guest(svm->virt_spec_ctrl); |
| 4002 | 3988 | ||
| 4003 | svm_vcpu_enter_exit(vcpu); | 3989 | svm_vcpu_enter_exit(vcpu, spec_ctrl_intercepted); |
| 4004 | |||
| 4005 | /* | ||
| 4006 | * We do not use IBRS in the kernel. If this vCPU has used the | ||
| 4007 | * SPEC_CTRL MSR it may have left it on; save the value and | ||
| 4008 | * turn it off. This is much more efficient than blindly adding | ||
| 4009 | * it to the atomic save/restore list. Especially as the former | ||
| 4010 | * (Saving guest MSRs on vmexit) doesn't even exist in KVM. | ||
| 4011 | * | ||
| 4012 | * For non-nested case: | ||
| 4013 | * If the L01 MSR bitmap does not intercept the MSR, then we need to | ||
| 4014 | * save it. | ||
| 4015 | * | ||
| 4016 | * For nested case: | ||
| 4017 | * If the L02 MSR bitmap does not intercept the MSR, then we need to | ||
| 4018 | * save it. | ||
| 4019 | */ | ||
| 4020 | if (!static_cpu_has(X86_FEATURE_V_SPEC_CTRL) && | ||
| 4021 | unlikely(!msr_write_intercepted(vcpu, MSR_IA32_SPEC_CTRL))) | ||
| 4022 | svm->spec_ctrl = native_read_msr(MSR_IA32_SPEC_CTRL); | ||
| 4023 | 3990 | ||
| 4024 | if (!sev_es_guest(vcpu->kvm)) | 3991 | if (!sev_es_guest(vcpu->kvm)) |
| 4025 | reload_tss(vcpu); | 3992 | reload_tss(vcpu); |
| 4026 | 3993 | ||
| 4027 | if (!static_cpu_has(X86_FEATURE_V_SPEC_CTRL)) | 3994 | if (!static_cpu_has(X86_FEATURE_V_SPEC_CTRL)) |
| 4028 | x86_spec_ctrl_restore_host(svm->spec_ctrl, svm->virt_spec_ctrl); | 3995 | x86_spec_ctrl_restore_host(svm->virt_spec_ctrl); |
| 4029 | 3996 | ||
| 4030 | if (!sev_es_guest(vcpu->kvm)) { | 3997 | if (!sev_es_guest(vcpu->kvm)) { |
| 4031 | vcpu->arch.cr2 = svm->vmcb->save.cr2; | 3998 | vcpu->arch.cr2 = svm->vmcb->save.cr2; |
| @@ -209,7 +209,6 @@ struct vcpu_svm { · 208 unmodified lines | |||
| 209 | struct vmcb *vmcb; | 209 | struct vmcb *vmcb; |
| 210 | struct kvm_vmcb_info vmcb01; | 210 | struct kvm_vmcb_info vmcb01; |
| 211 | struct kvm_vmcb_info *current_vmcb; | 211 | struct kvm_vmcb_info *current_vmcb; |
| 212 | struct svm_cpu_data *svm_data; | ||
| 213 | u32 asid; | 212 | u32 asid; |
| 214 | u32 sysenter_esp_hi; | 213 | u32 sysenter_esp_hi; |
| 215 | u32 sysenter_eip_hi; | 214 | u32 sysenter_eip_hi; |
| @@ -281,8 +280,6 @@ struct vcpu_svm { · 65 unmodified lines | |||
| 281 | }; | 280 | }; |
| 282 | 281 | ||
| 283 | struct svm_cpu_data { | 282 | struct svm_cpu_data { |
| 284 | int cpu; | ||
| 285 | |||
| 286 | u64 asid_generation; | 283 | u64 asid_generation; |
| 287 | u32 max_asid; | 284 | u32 max_asid; |
| 288 | u32 next_asid; | 285 | u32 next_asid; |
| @@ -290,13 +287,15 @@ struct svm_cpu_data { · 1 unmodified line | |||
| 290 | struct kvm_ldttss_desc *tss_desc; | 287 | struct kvm_ldttss_desc *tss_desc; |
| 291 | 288 | ||
| 292 | struct page *save_area; | 289 | struct page *save_area; |
| 290 | unsigned long save_area_pa; | ||
| 291 | |||
| 293 | struct vmcb *current_vmcb; | 292 | struct vmcb *current_vmcb; |
| 294 | 293 | ||
| 295 | /* index = sev_asid, value = vmcb pointer */ | 294 | /* index = sev_asid, value = vmcb pointer */ |
| 296 | struct vmcb **sev_vmcbs; | 295 | struct vmcb **sev_vmcbs; |
| 297 | }; | 296 | }; |
| 298 | 297 | ||
| 299 | DECLARE_PER_CPU(struct svm_cpu_data *, svm_data); | 298 | DECLARE_PER_CPU(struct svm_cpu_data, svm_data); |
| 300 | 299 | ||
| 301 | void recalc_intercepts(struct vcpu_svm *svm); | 300 | void recalc_intercepts(struct vcpu_svm *svm); |
| 302 | 301 | ||
| @@ -683,7 +682,7 @@ void sev_es_unmap_ghcb(struct vcpu_svm *svm); · 380 unmodified lines | |||
| 683 | 682 | ||
| 684 | /* vmenter.S */ | 683 | /* vmenter.S */ |
| 685 | 684 | ||
| 686 | void __svm_sev_es_vcpu_run(unsigned long vmcb_pa); | 685 | void __svm_sev_es_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted); |
| 687 | void __svm_vcpu_run(unsigned long vmcb_pa, unsigned long *regs); | 686 | void __svm_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted); |
| 688 | 687 | ||
| 689 | #endif | 688 | #endif |
| @@ -61,9 +61,4 @@ static __always_inline void vmsave(unsigned long pa) · 60 unmodified lines | |||
| 61 | svm_asm1(vmsave, "a" (pa), "memory"); | 61 | svm_asm1(vmsave, "a" (pa), "memory"); |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | static __always_inline void vmload(unsigned long pa) | ||
| 65 | { | ||
| 66 | svm_asm1(vmload, "a" (pa), "memory"); | ||
| 67 | } | ||
| 68 | |||
| 69 | #endif /* __KVM_X86_SVM_OPS_H */ | 64 | #endif /* __KVM_X86_SVM_OPS_H */ |
| @@ -4,35 +4,97 @@ · 3 unmodified lines | |||
| 4 | #include <asm/bitsperlong.h> | 4 | #include <asm/bitsperlong.h> |
| 5 | #include <asm/kvm_vcpu_regs.h> | 5 | #include <asm/kvm_vcpu_regs.h> |
| 6 | #include <asm/nospec-branch.h> | 6 | #include <asm/nospec-branch.h> |
| 7 | #include "kvm-asm-offsets.h" | ||
| 7 | 8 | ||
| 8 | #define WORD_SIZE (BITS_PER_LONG / 8) | 9 | #define WORD_SIZE (BITS_PER_LONG / 8) |
| 9 | 10 | ||
| 10 | /* Intentionally omit RAX as it's context switched by hardware */ | 11 | /* Intentionally omit RAX as it's context switched by hardware */ |
| 11 | #define VCPU_RCX __VCPU_REGS_RCX * WORD_SIZE | 12 | #define VCPU_RCX (SVM_vcpu_arch_regs + __VCPU_REGS_RCX * WORD_SIZE) |
| 12 | #define VCPU_RDX __VCPU_REGS_RDX * WORD_SIZE | 13 | #define VCPU_RDX (SVM_vcpu_arch_regs + __VCPU_REGS_RDX * WORD_SIZE) |
| 13 | #define VCPU_RBX __VCPU_REGS_RBX * WORD_SIZE | 14 | #define VCPU_RBX (SVM_vcpu_arch_regs + __VCPU_REGS_RBX * WORD_SIZE) |
| 14 | /* Intentionally omit RSP as it's context switched by hardware */ | 15 | /* Intentionally omit RSP as it's context switched by hardware */ |
| 15 | #define VCPU_RBP __VCPU_REGS_RBP * WORD_SIZE | 16 | #define VCPU_RBP (SVM_vcpu_arch_regs + __VCPU_REGS_RBP * WORD_SIZE) |
| 16 | #define VCPU_RSI __VCPU_REGS_RSI * WORD_SIZE | 17 | #define VCPU_RSI (SVM_vcpu_arch_regs + __VCPU_REGS_RSI * WORD_SIZE) |
| 17 | #define VCPU_RDI __VCPU_REGS_RDI * WORD_SIZE | 18 | #define VCPU_RDI (SVM_vcpu_arch_regs + __VCPU_REGS_RDI * WORD_SIZE) |
| 18 | 19 | ||
| 19 | #ifdef CONFIG_X86_64 | 20 | #ifdef CONFIG_X86_64 |
| 20 | #define VCPU_R8 __VCPU_REGS_R8 * WORD_SIZE | 21 | #define VCPU_R8 (SVM_vcpu_arch_regs + __VCPU_REGS_R8 * WORD_SIZE) |
| 21 | #define VCPU_R9 __VCPU_REGS_R9 * WORD_SIZE | 22 | #define VCPU_R9 (SVM_vcpu_arch_regs + __VCPU_REGS_R9 * WORD_SIZE) |
| 22 | #define VCPU_R10 __VCPU_REGS_R10 * WORD_SIZE | 23 | #define VCPU_R10 (SVM_vcpu_arch_regs + __VCPU_REGS_R10 * WORD_SIZE) |
| 23 | #define VCPU_R11 __VCPU_REGS_R11 * WORD_SIZE | 24 | #define VCPU_R11 (SVM_vcpu_arch_regs + __VCPU_REGS_R11 * WORD_SIZE) |
| 24 | #define VCPU_R12 __VCPU_REGS_R12 * WORD_SIZE | 25 | #define VCPU_R12 (SVM_vcpu_arch_regs + __VCPU_REGS_R12 * WORD_SIZE) |
| 25 | #define VCPU_R13 __VCPU_REGS_R13 * WORD_SIZE | 26 | #define VCPU_R13 (SVM_vcpu_arch_regs + __VCPU_REGS_R13 * WORD_SIZE) |
| 26 | #define VCPU_R14 __VCPU_REGS_R14 * WORD_SIZE | 27 | #define VCPU_R14 (SVM_vcpu_arch_regs + __VCPU_REGS_R14 * WORD_SIZE) |
| 27 | #define VCPU_R15 __VCPU_REGS_R15 * WORD_SIZE | 28 | #define VCPU_R15 (SVM_vcpu_arch_regs + __VCPU_REGS_R15 * WORD_SIZE) |
| 28 | #endif | 29 | #endif |
| 29 | 30 | ||
| 31 | #define SVM_vmcb01_pa (SVM_vmcb01 + KVM_VMCB_pa) | ||
| 32 | |||
| 30 | .section .noinstr.text, "ax" | 33 | .section .noinstr.text, "ax" |
| 31 | 34 | ||
| 35 | .macro RESTORE_GUEST_SPEC_CTRL | ||
| 36 | /* No need to do anything if SPEC_CTRL is unset or V_SPEC_CTRL is set */ | ||
| 37 | ALTERNATIVE_2 "", \ | ||
| 38 | "jmp 800f", X86_FEATURE_MSR_SPEC_CTRL, \ | ||
| 39 | "", X86_FEATURE_V_SPEC_CTRL | ||
| 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 | |||
| 32 | /** | 94 | /** |
| 33 | * __svm_vcpu_run - Run a vCPU via a transition to SVM guest mode | 95 | * __svm_vcpu_run - Run a vCPU via a transition to SVM guest mode |
| 34 | * @vmcb_pa: unsigned long | 96 | * @svm: struct vcpu_svm * |
| 35 | * @regs: unsigned long * (to guest registers) | 97 | * @spec_ctrl_intercepted: bool |
| 36 | */ | 98 | */ |
| 37 | SYM_FUNC_START(__svm_vcpu_run) | 99 | SYM_FUNC_START(__svm_vcpu_run) |
| 38 | push %_ASM_BP | 100 | push %_ASM_BP |
| @@ -47,49 +109,71 @@ SYM_FUNC_START(__svm_vcpu_run) · 8 unmodified lines | |||
| 47 | #endif | 109 | #endif |
| 48 | push %_ASM_BX | 110 | push %_ASM_BX |
| 49 | 111 | ||
| 50 | /* Save @regs. */ | 112 | /* |
| 113 | * Save variables needed after vmexit on the stack, in inverse | ||
| 114 | * order compared to when they are needed. | ||
| 115 | */ | ||
| 116 | |||
| 117 | /* Accessed directly from the stack in RESTORE_HOST_SPEC_CTRL. */ | ||
| 51 | push %_ASM_ARG2 | 118 | push %_ASM_ARG2 |
| 52 | 119 | ||
| 53 | /* Save @vmcb. */ | 120 | /* Needed to restore access to percpu variables. */ |
| 121 | __ASM_SIZE(push) PER_CPU_VAR(svm_data + SD_save_area_pa) | ||
| 122 | |||
| 123 | /* Finally save @svm. */ | ||
| 54 | push %_ASM_ARG1 | 124 | push %_ASM_ARG1 |
| 55 | 125 | ||
| 56 | /* Move @regs to RAX. */ | 126 | .ifnc _ASM_ARG1, _ASM_DI |
| 57 | mov %_ASM_ARG2, %_ASM_AX | 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 | ||
| 58 | 150 | ||
| 59 | /* Load guest registers. */ | 151 | /* Load guest registers. */ |
| 60 | mov VCPU_RCX(%_ASM_AX), %_ASM_CX | 152 | mov VCPU_RCX(%_ASM_DI), %_ASM_CX |
| 61 | mov VCPU_RDX(%_ASM_AX), %_ASM_DX | 153 | mov VCPU_RDX(%_ASM_DI), %_ASM_DX |
| 62 | mov VCPU_RBX(%_ASM_AX), %_ASM_BX | 154 | mov VCPU_RBX(%_ASM_DI), %_ASM_BX |
| 63 | mov VCPU_RBP(%_ASM_AX), %_ASM_BP | 155 | mov VCPU_RBP(%_ASM_DI), %_ASM_BP |
| 64 | mov VCPU_RSI(%_ASM_AX), %_ASM_SI | 156 | mov VCPU_RSI(%_ASM_DI), %_ASM_SI |
| 65 | mov VCPU_RDI(%_ASM_AX), %_ASM_DI | ||
| 66 | #ifdef CONFIG_X86_64 | 157 | #ifdef CONFIG_X86_64 |
| 67 | mov VCPU_R8 (%_ASM_AX), %r8 | 158 | mov VCPU_R8 (%_ASM_DI), %r8 |
| 68 | mov VCPU_R9 (%_ASM_AX), %r9 | 159 | mov VCPU_R9 (%_ASM_DI), %r9 |
| 69 | mov VCPU_R10(%_ASM_AX), %r10 | 160 | mov VCPU_R10(%_ASM_DI), %r10 |
| 70 | mov VCPU_R11(%_ASM_AX), %r11 | 161 | mov VCPU_R11(%_ASM_DI), %r11 |
| 71 | mov VCPU_R12(%_ASM_AX), %r12 | 162 | mov VCPU_R12(%_ASM_DI), %r12 |
| 72 | mov VCPU_R13(%_ASM_AX), %r13 | 163 | mov VCPU_R13(%_ASM_DI), %r13 |
| 73 | mov VCPU_R14(%_ASM_AX), %r14 | 164 | mov VCPU_R14(%_ASM_DI), %r14 |
| 74 | mov VCPU_R15(%_ASM_AX), %r15 | 165 | mov VCPU_R15(%_ASM_DI), %r15 |
| 75 | #endif | 166 | #endif |
| 76 | 167 | mov VCPU_RDI(%_ASM_DI), %_ASM_DI | |
| 77 | /* "POP" @vmcb to RAX. */ | ||
| 78 | pop %_ASM_AX | ||
| 79 | 168 | ||
| 80 | /* Enter guest mode */ | 169 | /* Enter guest mode */ |
| 81 | sti | 170 | sti |
| 82 | 171 | ||
| 83 | 1: vmrun %_ASM_AX | 172 | 3: vmrun %_ASM_AX |
| 84 | 173 | 4: | |
| 85 | 2: cli | 174 | cli |
| 86 | |||
| 87 | #ifdef CONFIG_RETPOLINE | ||
| 88 | /* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */ | ||
| 89 | FILL_RETURN_BUFFER %_ASM_AX, RSB_CLEAR_LOOPS, X86_FEATURE_RETPOLINE | ||
| 90 | #endif | ||
| 91 | 175 | ||
| 92 | /* "POP" @regs to RAX. */ | 176 | /* Pop @svm to RAX while it's the only available register. */ |
| 93 | pop %_ASM_AX | 177 | pop %_ASM_AX |
| 94 | 178 | ||
| 95 | /* Save all guest registers. */ | 179 | /* Save all guest registers. */ |
| @@ -110,6 +194,26 @@ SYM_FUNC_START(__svm_vcpu_run) · 14 unmodified lines | |||
| 110 | mov %r15, VCPU_R15(%_ASM_AX) | 194 | mov %r15, VCPU_R15(%_ASM_AX) |
| 111 | #endif | 195 | #endif |
| 112 | 196 | ||
| 197 | /* @svm can stay in RDI from now on. */ | ||
| 198 | mov %_ASM_AX, %_ASM_DI | ||
| 199 | |||
| 200 | mov SVM_vmcb01_pa(%_ASM_DI), %_ASM_AX | ||
| 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 | |||
| 113 | /* | 217 | /* |
| 114 | * Mitigate RETBleed for AMD/Hygon Zen uarch. RET should be | 218 | * Mitigate RETBleed for AMD/Hygon Zen uarch. RET should be |
| 115 | * untrained as soon as we exit the VM and are back to the | 219 | * untrained as soon as we exit the VM and are back to the |
| @@ -145,6 +249,9 @@ SYM_FUNC_START(__svm_vcpu_run) · 29 unmodified lines | |||
| 145 | xor %r15d, %r15d | 249 | xor %r15d, %r15d |
| 146 | #endif | 250 | #endif |
| 147 | 251 | ||
| 252 | /* "Pop" @spec_ctrl_intercepted. */ | ||
| 253 | pop %_ASM_BX | ||
| 254 | |||
| 148 | pop %_ASM_BX | 255 | pop %_ASM_BX |
| 149 | 256 | ||
| 150 | #ifdef CONFIG_X86_64 | 257 | #ifdef CONFIG_X86_64 |
| @@ -159,17 +266,33 @@ SYM_FUNC_START(__svm_vcpu_run) · 8 unmodified lines | |||
| 159 | pop %_ASM_BP | 266 | pop %_ASM_BP |
| 160 | RET | 267 | RET |
| 161 | 268 | ||
| 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 | ||
| 163 | jne 2b | 273 | jne 2b |
| 164 | ud2 | 274 | 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 | ||
| 165 | 284 | ||
| 166 | _ASM_EXTABLE(1b, 3b) | 285 | _ASM_EXTABLE(1b, 10b) |
| 286 | _ASM_EXTABLE(3b, 30b) | ||
| 287 | _ASM_EXTABLE(5b, 50b) | ||
| 288 | _ASM_EXTABLE(7b, 70b) | ||
| 167 | 289 | ||
| 168 | SYM_FUNC_END(__svm_vcpu_run) | 290 | SYM_FUNC_END(__svm_vcpu_run) |
| 169 | 291 | ||
| 170 | /** | 292 | /** |
| 171 | * __svm_sev_es_vcpu_run - Run a SEV-ES vCPU via a transition to SVM guest mode | 293 | * __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 | ||
| 173 | */ | 296 | */ |
| 174 | SYM_FUNC_START(__svm_sev_es_vcpu_run) | 297 | SYM_FUNC_START(__svm_sev_es_vcpu_run) |
| 175 | push %_ASM_BP | 298 | push %_ASM_BP |
| @@ -184,8 +307,31 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) · 8 unmodified lines | |||
| 184 | #endif | 307 | #endif |
| 185 | push %_ASM_BX | 308 | push %_ASM_BX |
| 186 | 309 | ||
| 187 | /* Move @vmcb to RAX. */ | 310 | /* |
| 188 | mov %_ASM_ARG1, %_ASM_AX | 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 | ||
| 189 | 335 | ||
| 190 | /* Enter guest mode */ | 336 | /* Enter guest mode */ |
| 191 | sti | 337 | sti |
| @@ -194,11 +340,17 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) · 2 unmodified lines | |||
| 194 | 340 | ||
| 195 | 2: cli | 341 | 2: cli |
| 196 | 342 | ||
| 343 | /* Pop @svm to RDI, guest registers have been saved already. */ | ||
| 344 | pop %_ASM_DI | ||
| 345 | |||
| 197 | #ifdef CONFIG_RETPOLINE | 346 | #ifdef CONFIG_RETPOLINE |
| 198 | /* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */ | 347 | /* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */ |
| 199 | FILL_RETURN_BUFFER %_ASM_AX, RSB_CLEAR_LOOPS, X86_FEATURE_RETPOLINE | 348 | FILL_RETURN_BUFFER %_ASM_AX, RSB_CLEAR_LOOPS, X86_FEATURE_RETPOLINE |
| 200 | #endif | 349 | #endif |
| 201 | 350 | ||
| 351 | /* Clobbers RAX, RCX, RDX. */ | ||
| 352 | RESTORE_HOST_SPEC_CTRL | ||
| 353 | |||
| 202 | /* | 354 | /* |
| 203 | * Mitigate RETBleed for AMD/Hygon Zen uarch. RET should be | 355 | * Mitigate RETBleed for AMD/Hygon Zen uarch. RET should be |
| 204 | * untrained as soon as we exit the VM and are back to the | 356 | * untrained as soon as we exit the VM and are back to the |
| @@ -208,6 +360,9 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) · 3 unmodified lines | |||
| 208 | */ | 360 | */ |
| 209 | UNTRAIN_RET | 361 | UNTRAIN_RET |
| 210 | 362 | ||
| 363 | /* "Pop" @spec_ctrl_intercepted. */ | ||
| 364 | pop %_ASM_BX | ||
| 365 | |||
| 211 | pop %_ASM_BX | 366 | pop %_ASM_BX |
| 212 | 367 | ||
| 213 | #ifdef CONFIG_X86_64 | 368 | #ifdef CONFIG_X86_64 |
| @@ -222,6 +377,9 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) · 8 unmodified lines | |||
| 222 | pop %_ASM_BP | 377 | pop %_ASM_BP |
| 223 | RET | 378 | RET |
| 224 | 379 | ||
| 380 | RESTORE_GUEST_SPEC_CTRL_BODY | ||
| 381 | RESTORE_HOST_SPEC_CTRL_BODY | ||
| 382 | |||
| 225 | 3: cmpb $0, kvm_rebooting | 383 | 3: cmpb $0, kvm_rebooting |
| 226 | jne 2b | 384 | jne 2b |
| 227 | ud2 | 385 | ud2 |
| @@ -617,7 +617,7 @@ static void intel_pmu_init(struct kvm_vcpu *vcpu) · 616 unmodified lines | |||
| 617 | struct kvm_pmu *pmu = vcpu_to_pmu(vcpu); | 617 | struct kvm_pmu *pmu = vcpu_to_pmu(vcpu); |
| 618 | struct lbr_desc *lbr_desc = vcpu_to_lbr_desc(vcpu); | 618 | struct lbr_desc *lbr_desc = vcpu_to_lbr_desc(vcpu); |
| 619 | 619 | ||
| 620 | for (i = 0; i < INTEL_PMC_MAX_GENERIC; i++) { | 620 | for (i = 0; i < KVM_INTEL_PMC_MAX_GENERIC; i++) { |
| 621 | pmu->gp_counters[i].type = KVM_PMC_GP; | 621 | pmu->gp_counters[i].type = KVM_PMC_GP; |
| 622 | pmu->gp_counters[i].vcpu = vcpu; | 622 | pmu->gp_counters[i].vcpu = vcpu; |
| 623 | pmu->gp_counters[i].idx = i; | 623 | pmu->gp_counters[i].idx = i; |
| @@ -643,7 +643,7 @@ static void intel_pmu_reset(struct kvm_vcpu *vcpu) · 19 unmodified lines | |||
| 643 | struct kvm_pmc *pmc = NULL; | 643 | struct kvm_pmc *pmc = NULL; |
| 644 | int i; | 644 | int i; |
| 645 | 645 | ||
| 646 | for (i = 0; i < INTEL_PMC_MAX_GENERIC; i++) { | 646 | for (i = 0; i < KVM_INTEL_PMC_MAX_GENERIC; i++) { |
| 647 | pmc = &pmu->gp_counters[i]; | 647 | pmc = &pmu->gp_counters[i]; |
| 648 | 648 | ||
| 649 | pmc_stop_counter(pmc); | 649 | pmc_stop_counter(pmc); |
| @@ -1,12 +1,12 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | #include <linux/linkage.h> | 2 | #include <linux/linkage.h> |
| 3 | #include <asm/asm.h> | 3 | #include <asm/asm.h> |
| 4 | #include <asm/asm-offsets.h> | ||
| 5 | #include <asm/bitsperlong.h> | 4 | #include <asm/bitsperlong.h> |
| 6 | #include <asm/kvm_vcpu_regs.h> | 5 | #include <asm/kvm_vcpu_regs.h> |
| 7 | #include <asm/nospec-branch.h> | 6 | #include <asm/nospec-branch.h> |
| 8 | #include <asm/percpu.h> | 7 | #include <asm/percpu.h> |
| 9 | #include <asm/segment.h> | 8 | #include <asm/segment.h> |
| 9 | #include "kvm-asm-offsets.h" | ||
| 10 | #include "run_flags.h" | 10 | #include "run_flags.h" |
| 11 | 11 | ||
| 12 | #define WORD_SIZE (BITS_PER_LONG / 8) | 12 | #define WORD_SIZE (BITS_PER_LONG / 8) |
| @@ -1438,32 +1438,27 @@ static const u32 msrs_to_save_all[] = { · 1437 unmodified lines | |||
| 1438 | MSR_ARCH_PERFMON_FIXED_CTR0 + 2, | 1438 | MSR_ARCH_PERFMON_FIXED_CTR0 + 2, |
| 1439 | MSR_CORE_PERF_FIXED_CTR_CTRL, MSR_CORE_PERF_GLOBAL_STATUS, | 1439 | MSR_CORE_PERF_FIXED_CTR_CTRL, MSR_CORE_PERF_GLOBAL_STATUS, |
| 1440 | MSR_CORE_PERF_GLOBAL_CTRL, MSR_CORE_PERF_GLOBAL_OVF_CTRL, | 1440 | MSR_CORE_PERF_GLOBAL_CTRL, MSR_CORE_PERF_GLOBAL_OVF_CTRL, |
| 1441 | MSR_IA32_PEBS_ENABLE, MSR_IA32_DS_AREA, MSR_PEBS_DATA_CFG, | ||
| 1442 | |||
| 1443 | /* This part of MSRs should match KVM_INTEL_PMC_MAX_GENERIC. */ | ||
| 1441 | MSR_ARCH_PERFMON_PERFCTR0, MSR_ARCH_PERFMON_PERFCTR1, | 1444 | MSR_ARCH_PERFMON_PERFCTR0, MSR_ARCH_PERFMON_PERFCTR1, |
| 1442 | MSR_ARCH_PERFMON_PERFCTR0 + 2, MSR_ARCH_PERFMON_PERFCTR0 + 3, | 1445 | MSR_ARCH_PERFMON_PERFCTR0 + 2, MSR_ARCH_PERFMON_PERFCTR0 + 3, |
| 1443 | MSR_ARCH_PERFMON_PERFCTR0 + 4, MSR_ARCH_PERFMON_PERFCTR0 + 5, | 1446 | MSR_ARCH_PERFMON_PERFCTR0 + 4, MSR_ARCH_PERFMON_PERFCTR0 + 5, |
| 1444 | MSR_ARCH_PERFMON_PERFCTR0 + 6, MSR_ARCH_PERFMON_PERFCTR0 + 7, | 1447 | MSR_ARCH_PERFMON_PERFCTR0 + 6, MSR_ARCH_PERFMON_PERFCTR0 + 7, |
| 1445 | MSR_ARCH_PERFMON_PERFCTR0 + 8, MSR_ARCH_PERFMON_PERFCTR0 + 9, | ||
| 1446 | MSR_ARCH_PERFMON_PERFCTR0 + 10, MSR_ARCH_PERFMON_PERFCTR0 + 11, | ||
| 1447 | MSR_ARCH_PERFMON_PERFCTR0 + 12, MSR_ARCH_PERFMON_PERFCTR0 + 13, | ||
| 1448 | MSR_ARCH_PERFMON_PERFCTR0 + 14, MSR_ARCH_PERFMON_PERFCTR0 + 15, | ||
| 1449 | MSR_ARCH_PERFMON_PERFCTR0 + 16, MSR_ARCH_PERFMON_PERFCTR0 + 17, | ||
| 1450 | MSR_ARCH_PERFMON_EVENTSEL0, MSR_ARCH_PERFMON_EVENTSEL1, | 1448 | MSR_ARCH_PERFMON_EVENTSEL0, MSR_ARCH_PERFMON_EVENTSEL1, |
| 1451 | MSR_ARCH_PERFMON_EVENTSEL0 + 2, MSR_ARCH_PERFMON_EVENTSEL0 + 3, | 1449 | MSR_ARCH_PERFMON_EVENTSEL0 + 2, MSR_ARCH_PERFMON_EVENTSEL0 + 3, |
| 1452 | MSR_ARCH_PERFMON_EVENTSEL0 + 4, MSR_ARCH_PERFMON_EVENTSEL0 + 5, | 1450 | MSR_ARCH_PERFMON_EVENTSEL0 + 4, MSR_ARCH_PERFMON_EVENTSEL0 + 5, |
| 1453 | MSR_ARCH_PERFMON_EVENTSEL0 + 6, MSR_ARCH_PERFMON_EVENTSEL0 + 7, | 1451 | MSR_ARCH_PERFMON_EVENTSEL0 + 6, MSR_ARCH_PERFMON_EVENTSEL0 + 7, |
| 1454 | MSR_ARCH_PERFMON_EVENTSEL0 + 8, MSR_ARCH_PERFMON_EVENTSEL0 + 9, | ||
| 1455 | MSR_ARCH_PERFMON_EVENTSEL0 + 10, MSR_ARCH_PERFMON_EVENTSEL0 + 11, | ||
| 1456 | MSR_ARCH_PERFMON_EVENTSEL0 + 12, MSR_ARCH_PERFMON_EVENTSEL0 + 13, | ||
| 1457 | MSR_ARCH_PERFMON_EVENTSEL0 + 14, MSR_ARCH_PERFMON_EVENTSEL0 + 15, | ||
| 1458 | MSR_ARCH_PERFMON_EVENTSEL0 + 16, MSR_ARCH_PERFMON_EVENTSEL0 + 17, | ||
| 1459 | MSR_IA32_PEBS_ENABLE, MSR_IA32_DS_AREA, MSR_PEBS_DATA_CFG, | ||
| 1460 | 1452 | ||
| 1461 | MSR_K7_EVNTSEL0, MSR_K7_EVNTSEL1, MSR_K7_EVNTSEL2, MSR_K7_EVNTSEL3, | 1453 | MSR_K7_EVNTSEL0, MSR_K7_EVNTSEL1, MSR_K7_EVNTSEL2, MSR_K7_EVNTSEL3, |
| 1462 | MSR_K7_PERFCTR0, MSR_K7_PERFCTR1, MSR_K7_PERFCTR2, MSR_K7_PERFCTR3, | 1454 | MSR_K7_PERFCTR0, MSR_K7_PERFCTR1, MSR_K7_PERFCTR2, MSR_K7_PERFCTR3, |
| 1455 | |||
| 1456 | /* This part of MSRs should match KVM_AMD_PMC_MAX_GENERIC. */ | ||
| 1463 | MSR_F15H_PERF_CTL0, MSR_F15H_PERF_CTL1, MSR_F15H_PERF_CTL2, | 1457 | MSR_F15H_PERF_CTL0, MSR_F15H_PERF_CTL1, MSR_F15H_PERF_CTL2, |
| 1464 | MSR_F15H_PERF_CTL3, MSR_F15H_PERF_CTL4, MSR_F15H_PERF_CTL5, | 1458 | MSR_F15H_PERF_CTL3, MSR_F15H_PERF_CTL4, MSR_F15H_PERF_CTL5, |
| 1465 | MSR_F15H_PERF_CTR0, MSR_F15H_PERF_CTR1, MSR_F15H_PERF_CTR2, | 1459 | MSR_F15H_PERF_CTR0, MSR_F15H_PERF_CTR1, MSR_F15H_PERF_CTR2, |
| 1466 | MSR_F15H_PERF_CTR3, MSR_F15H_PERF_CTR4, MSR_F15H_PERF_CTR5, | 1460 | MSR_F15H_PERF_CTR3, MSR_F15H_PERF_CTR4, MSR_F15H_PERF_CTR5, |
| 1461 | |||
| 1467 | MSR_IA32_XFD, MSR_IA32_XFD_ERR, | 1462 | MSR_IA32_XFD, MSR_IA32_XFD_ERR, |
| 1468 | }; | 1463 | }; |
| 1469 | 1464 | ||
| @@ -7041,14 +7036,14 @@ static void kvm_init_msr_list(void) · 5571 unmodified lines | |||
| 7041 | intel_pt_validate_hw_cap(PT_CAP_num_address_ranges) * 2) | 7036 | intel_pt_validate_hw_cap(PT_CAP_num_address_ranges) * 2) |
| 7042 | continue; | 7037 | continue; |
| 7043 | break; | 7038 | break; |
| 7044 | case MSR_ARCH_PERFMON_PERFCTR0 ... MSR_ARCH_PERFMON_PERFCTR0 + 17: | 7039 | case MSR_ARCH_PERFMON_PERFCTR0 ... MSR_ARCH_PERFMON_PERFCTR_MAX: |
| 7045 | if (msrs_to_save_all[i] - MSR_ARCH_PERFMON_PERFCTR0 >= | 7040 | if (msrs_to_save_all[i] - MSR_ARCH_PERFMON_PERFCTR0 >= |
| 7046 | min(INTEL_PMC_MAX_GENERIC, kvm_pmu_cap.num_counters_gp)) | 7041 | min(KVM_INTEL_PMC_MAX_GENERIC, kvm_pmu_cap.num_counters_gp)) |
| 7047 | continue; | 7042 | continue; |
| 7048 | break; | 7043 | break; |
| 7049 | case MSR_ARCH_PERFMON_EVENTSEL0 ... MSR_ARCH_PERFMON_EVENTSEL0 + 17: | 7044 | case MSR_ARCH_PERFMON_EVENTSEL0 ... MSR_ARCH_PERFMON_EVENTSEL_MAX: |
| 7050 | if (msrs_to_save_all[i] - MSR_ARCH_PERFMON_EVENTSEL0 >= | 7045 | if (msrs_to_save_all[i] - MSR_ARCH_PERFMON_EVENTSEL0 >= |
| 7051 | min(INTEL_PMC_MAX_GENERIC, kvm_pmu_cap.num_counters_gp)) | 7046 | min(KVM_INTEL_PMC_MAX_GENERIC, kvm_pmu_cap.num_counters_gp)) |
| 7052 | continue; | 7047 | continue; |
| 7053 | break; | 7048 | break; |
| 7054 | case MSR_IA32_XFD: | 7049 | case MSR_IA32_XFD: |
| @@ -6,6 +6,7 @@ · 5 unmodified lines | |||
| 6 | 6 | ||
| 7 | #include <linux/uaccess.h> | 7 | #include <linux/uaccess.h> |
| 8 | #include <linux/export.h> | 8 | #include <linux/export.h> |
| 9 | #include <linux/instrumented.h> | ||
| 9 | 10 | ||
| 10 | #include <asm/tlbflush.h> | 11 | #include <asm/tlbflush.h> |
| 11 | 12 | ||
| @@ -44,7 +45,9 @@ copy_from_user_nmi(void *to, const void __user *from, unsigned long n) · 32 unmodified lines | |||
| 44 | * called from other contexts. | 45 | * called from other contexts. |
| 45 | */ | 46 | */ |
| 46 | pagefault_disable(); | 47 | pagefault_disable(); |
| 48 | instrument_copy_from_user_before(to, from, n); | ||
| 47 | ret = raw_copy_from_user(to, from, n); | 49 | ret = raw_copy_from_user(to, from, n); |
| 50 | instrument_copy_from_user_after(to, from, n, ret); | ||
| 48 | pagefault_enable(); | 51 | pagefault_enable(); |
| 49 | 52 | ||
| 50 | return ret; | 53 | return ret; |
| @@ -37,8 +37,12 @@ int pmd_huge(pmd_t pmd) · 36 unmodified lines | |||
| 37 | */ | 37 | */ |
| 38 | int pud_huge(pud_t pud) | 38 | int pud_huge(pud_t pud) |
| 39 | { | 39 | { |
| 40 | #if CONFIG_PGTABLE_LEVELS > 2 | ||
| 40 | return !pud_none(pud) && | 41 | return !pud_none(pud) && |
| 41 | (pud_val(pud) & (_PAGE_PRESENT|_PAGE_PSE)) != _PAGE_PRESENT; | 42 | (pud_val(pud) & (_PAGE_PRESENT|_PAGE_PSE)) != _PAGE_PRESENT; |
| 43 | #else | ||
| 44 | return 0; | ||
| 45 | #endif | ||
| 42 | } | 46 | } |
| 43 | 47 | ||
| 44 | #ifdef CONFIG_HUGETLB_PAGE | 48 | #ifdef CONFIG_HUGETLB_PAGE |
| @@ -610,6 +610,10 @@ struct bfq_group *bfq_bio_bfqg(struct bfq_data *bfqd, struct bio *bio) · 609 unmodified lines | |||
| 610 | struct bfq_group *bfqg; | 610 | struct bfq_group *bfqg; |
| 611 | 611 | ||
| 612 | while (blkg) { | 612 | while (blkg) { |
| 613 | if (!blkg->online) { | ||
| 614 | blkg = blkg->parent; | ||
| 615 | continue; | ||
| 616 | } | ||
| 613 | bfqg = blkg_to_bfqg(blkg); | 617 | bfqg = blkg_to_bfqg(blkg); |
| 614 | if (bfqg->online) { | 618 | if (bfqg->online) { |
| 615 | bio_associate_blkg_from_css(bio, &blkg->blkcg->css); | 619 | bio_associate_blkg_from_css(bio, &blkg->blkcg->css); |
| @@ -87,8 +87,8 @@ struct opal_dev { · 86 unmodified lines | |||
| 87 | u64 lowest_lba; | 87 | u64 lowest_lba; |
| 88 | 88 | ||
| 89 | size_t pos; | 89 | size_t pos; |
| 90 | u8 cmd[IO_BUFFER_LENGTH]; | 90 | u8 *cmd; |
| 91 | u8 resp[IO_BUFFER_LENGTH]; | 91 | u8 *resp; |
| 92 | 92 | ||
| 93 | struct parsed_resp parsed; | 93 | struct parsed_resp parsed; |
| 94 | size_t prev_d_len; | 94 | size_t prev_d_len; |
| @@ -2175,6 +2175,8 @@ void free_opal_dev(struct opal_dev *dev) · 2080 unmodified lines | |||
| 2175 | return; | 2175 | return; |
| 2176 | 2176 | ||
| 2177 | clean_opal_dev(dev); | 2177 | clean_opal_dev(dev); |
| 2178 | kfree(dev->resp); | ||
| 2179 | kfree(dev->cmd); | ||
| 2178 | kfree(dev); | 2180 | kfree(dev); |
| 2179 | } | 2181 | } |
| 2180 | EXPORT_SYMBOL(free_opal_dev); | 2182 | 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 | |||
| 2187 | if (!dev) | 2189 | if (!dev) |
| 2188 | return NULL; | 2190 | return NULL; |
| 2189 | 2191 | ||
| 2192 | /* | ||
| 2193 | * Presumably DMA-able buffers must be cache-aligned. Kmalloc makes | ||
| 2194 | * sure the allocated buffer is DMA-safe in that regard. | ||
| 2195 | */ | ||
| 2196 | dev->cmd = kmalloc(IO_BUFFER_LENGTH, GFP_KERNEL); | ||
| 2197 | if (!dev->cmd) | ||
| 2198 | goto err_free_dev; | ||
| 2199 | |||
| 2200 | dev->resp = kmalloc(IO_BUFFER_LENGTH, GFP_KERNEL); | ||
| 2201 | if (!dev->resp) | ||
| 2202 | goto err_free_cmd; | ||
| 2203 | |||
| 2190 | INIT_LIST_HEAD(&dev->unlk_lst); | 2204 | INIT_LIST_HEAD(&dev->unlk_lst); |
| 2191 | mutex_init(&dev->dev_lock); | 2205 | mutex_init(&dev->dev_lock); |
| 2192 | dev->flags = 0; | 2206 | dev->flags = 0; |
| @@ -2194,11 +2208,21 @@ struct opal_dev *init_opal_dev(void *data, sec_send_recv *send_recv) · 1 unmodified line | |||
| 2194 | dev->send_recv = send_recv; | 2208 | dev->send_recv = send_recv; |
| 2195 | if (check_opal_support(dev) != 0) { | 2209 | if (check_opal_support(dev) != 0) { |
| 2196 | pr_debug("Opal is not supported on this device\n"); | 2210 | pr_debug("Opal is not supported on this device\n"); |
| 2197 | kfree(dev); | 2211 | goto err_free_resp; |
| 2198 | return NULL; | ||
| 2199 | } | 2212 | } |
| 2200 | 2213 | ||
| 2201 | return dev; | 2214 | return dev; |
| 2215 | |||
| 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; | ||
| 2202 | } | 2226 | } |
| 2203 | EXPORT_SYMBOL(init_opal_dev); | 2227 | EXPORT_SYMBOL(init_opal_dev); |
| 2204 | 2228 | ||
| @@ -645,6 +645,20 @@ static const struct dmi_system_id video_detect_dmi_table[] = { · 644 unmodified lines | |||
| 645 | }, | 645 | }, |
| 646 | }, | 646 | }, |
| 647 | 647 | ||
| 648 | /* | ||
| 649 | * Models which have nvidia-ec-wmi support, but should not use it. | ||
| 650 | * Note this indicates a likely firmware bug on these models and should | ||
| 651 | * be revisited if/when Linux gets support for dynamic mux mode. | ||
| 652 | */ | ||
| 653 | { | ||
| 654 | .callback = video_detect_force_native, | ||
| 655 | /* Dell G15 5515 */ | ||
| 656 | .matches = { | ||
| 657 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
| 658 | DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5515"), | ||
| 659 | }, | ||
| 660 | }, | ||
| 661 | |||
| 648 | /* | 662 | /* |
| 649 | * Desktops which falsely report a backlight and which our heuristics | 663 | * Desktops which falsely report a backlight and which our heuristics |
| 650 | * for this do not catch. | 664 | * for this do not catch. |
| @@ -670,7 +684,7 @@ static const struct dmi_system_id video_detect_dmi_table[] = { · 19 unmodified lines | |||
| 670 | 684 | ||
| 671 | static bool google_cros_ec_present(void) | 685 | static bool google_cros_ec_present(void) |
| 672 | { | 686 | { |
| 673 | return acpi_dev_found("GOOG0004"); | 687 | return acpi_dev_found("GOOG0004") || acpi_dev_found("GOOG000C"); |
| 674 | } | 688 | } |
| 675 | 689 | ||
| 676 | /* | 690 | /* |
| @@ -718,6 +732,10 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) · 41 unmodified lines | |||
| 718 | if (apple_gmux_present()) | 732 | if (apple_gmux_present()) |
| 719 | return acpi_backlight_apple_gmux; | 733 | return acpi_backlight_apple_gmux; |
| 720 | 734 | ||
| 735 | /* Chromebooks should always prefer native backlight control. */ | ||
| 736 | if (google_cros_ec_present() && native_available) | ||
| 737 | return acpi_backlight_native; | ||
| 738 | |||
| 721 | /* On systems with ACPI video use either native or ACPI video. */ | 739 | /* On systems with ACPI video use either native or ACPI video. */ |
| 722 | if (video_caps & ACPI_VIDEO_BACKLIGHT) { | 740 | if (video_caps & ACPI_VIDEO_BACKLIGHT) { |
| 723 | /* | 741 | /* |
| @@ -735,13 +753,6 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) · 11 unmodified lines | |||
| 735 | return acpi_backlight_video; | 753 | return acpi_backlight_video; |
| 736 | } | 754 | } |
| 737 | 755 | ||
| 738 | /* | ||
| 739 | * Chromebooks that don't have backlight handle in ACPI table | ||
| 740 | * are supposed to use native backlight if it's available. | ||
| 741 | */ | ||
| 742 | if (google_cros_ec_present() && native_available) | ||
| 743 | return acpi_backlight_native; | ||
| 744 | |||
| 745 | /* No ACPI video (old hw), use vendor specific fw methods. */ | 756 | /* No ACPI video (old hw), use vendor specific fw methods. */ |
| 746 | return acpi_backlight_vendor; | 757 | return acpi_backlight_vendor; |
| 747 | } | 758 | } |
| @@ -754,6 +765,18 @@ EXPORT_SYMBOL(acpi_video_get_backlight_type); · 6 unmodified lines | |||
| 754 | 765 | ||
| 755 | bool acpi_video_backlight_use_native(void) | 766 | bool acpi_video_backlight_use_native(void) |
| 756 | { | 767 | { |
| 757 | return __acpi_video_get_backlight_type(true) == acpi_backlight_native; | 768 | /* |
| 769 | * Call __acpi_video_get_backlight_type() to let it know that | ||
| 770 | * a native backlight is available. | ||
| 771 | */ | ||
| 772 | __acpi_video_get_backlight_type(true); | ||
| 773 | |||
| 774 | /* | ||
| 775 | * For now just always return true. There is a whole bunch of laptop | ||
| 776 | * models where (video_caps & ACPI_VIDEO_BACKLIGHT) is false causing | ||
| 777 | * __acpi_video_get_backlight_type() to return vendor, while these | ||
| 778 | * models only have a native backlight control. | ||
| 779 | */ | ||
| 780 | return true; | ||
| 758 | } | 781 | } |
| 759 | EXPORT_SYMBOL(acpi_video_backlight_use_native); | 782 | EXPORT_SYMBOL(acpi_video_backlight_use_native); |
| @@ -3264,6 +3264,7 @@ static unsigned int ata_scsiop_maint_in(struct ata_scsi_args *args, u8 *rbuf) · 3263 unmodified lines | |||
| 3264 | case REPORT_LUNS: | 3264 | case REPORT_LUNS: |
| 3265 | case REQUEST_SENSE: | 3265 | case REQUEST_SENSE: |
| 3266 | case SYNCHRONIZE_CACHE: | 3266 | case SYNCHRONIZE_CACHE: |
| 3267 | case SYNCHRONIZE_CACHE_16: | ||
| 3267 | case REZERO_UNIT: | 3268 | case REZERO_UNIT: |
| 3268 | case SEEK_6: | 3269 | case SEEK_6: |
| 3269 | case SEEK_10: | 3270 | case SEEK_10: |
| @@ -3922,6 +3923,7 @@ static inline ata_xlat_func_t ata_get_xlat_func(struct ata_device *dev, u8 cmd) · 652 unmodified lines | |||
| 3922 | return ata_scsi_write_same_xlat; | 3923 | return ata_scsi_write_same_xlat; |
| 3923 | 3924 | ||
| 3924 | case SYNCHRONIZE_CACHE: | 3925 | case SYNCHRONIZE_CACHE: |
| 3926 | case SYNCHRONIZE_CACHE_16: | ||
| 3925 | if (ata_try_flush_cache(dev)) | 3927 | if (ata_try_flush_cache(dev)) |
| 3926 | return ata_scsi_flush_xlat; | 3928 | return ata_scsi_flush_xlat; |
| 3927 | break; | 3929 | break; |
| @@ -3962,9 +3964,19 @@ static inline ata_xlat_func_t ata_get_xlat_func(struct ata_device *dev, u8 cmd) · 34 unmodified lines | |||
| 3962 | 3964 | ||
| 3963 | int __ata_scsi_queuecmd(struct scsi_cmnd *scmd, struct ata_device *dev) | 3965 | int __ata_scsi_queuecmd(struct scsi_cmnd *scmd, struct ata_device *dev) |
| 3964 | { | 3966 | { |
| 3967 | struct ata_port *ap = dev->link->ap; | ||
| 3965 | u8 scsi_op = scmd->cmnd[0]; | 3968 | u8 scsi_op = scmd->cmnd[0]; |
| 3966 | ata_xlat_func_t xlat_func; | 3969 | ata_xlat_func_t xlat_func; |
| 3967 | 3970 | ||
| 3971 | /* | ||
| 3972 | * scsi_queue_rq() will defer commands if scsi_host_in_recovery(). | ||
| 3973 | * However, this check is done without holding the ap->lock (a libata | ||
| 3974 | * specific lock), so we can have received an error irq since then, | ||
| 3975 | * therefore we must check if EH is pending, while holding ap->lock. | ||
| 3976 | */ | ||
| 3977 | if (ap->pflags & (ATA_PFLAG_EH_PENDING | ATA_PFLAG_EH_IN_PROGRESS)) | ||
| 3978 | return SCSI_MLQUEUE_DEVICE_BUSY; | ||
| 3979 | |||
| 3968 | if (unlikely(!scmd->cmd_len)) | 3980 | if (unlikely(!scmd->cmd_len)) |
| 3969 | goto bad_cdb_len; | 3981 | goto bad_cdb_len; |
| 3970 | 3982 | ||
| @@ -4145,6 +4157,7 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd) · 174 unmodified lines | |||
| 4145 | * turning this into a no-op. | 4157 | * turning this into a no-op. |
| 4146 | */ | 4158 | */ |
| 4147 | case SYNCHRONIZE_CACHE: | 4159 | case SYNCHRONIZE_CACHE: |
| 4160 | case SYNCHRONIZE_CACHE_16: | ||
| 4148 | fallthrough; | 4161 | fallthrough; |
| 4149 | 4162 | ||
| 4150 | /* no-op's, complete with success */ | 4163 | /* no-op's, complete with success */ |
| @@ -301,7 +301,9 @@ int ata_tport_add(struct device *parent, · 300 unmodified lines | |||
| 301 | pm_runtime_enable(dev); | 301 | pm_runtime_enable(dev); |
| 302 | pm_runtime_forbid(dev); | 302 | pm_runtime_forbid(dev); |
| 303 | 303 | ||
| 304 | transport_add_device(dev); | 304 | error = transport_add_device(dev); |
| 305 | if (error) | ||
| 306 | goto tport_transport_add_err; | ||
| 305 | transport_configure_device(dev); | 307 | transport_configure_device(dev); |
| 306 | 308 | ||
| 307 | error = ata_tlink_add(&ap->link); | 309 | error = ata_tlink_add(&ap->link); |
| @@ -312,12 +314,12 @@ int ata_tport_add(struct device *parent, · 4 unmodified lines | |||
| 312 | 314 | ||
| 313 | tport_link_err: | 315 | tport_link_err: |
| 314 | transport_remove_device(dev); | 316 | transport_remove_device(dev); |
| 317 | tport_transport_add_err: | ||
| 315 | device_del(dev); | 318 | device_del(dev); |
| 316 | 319 | ||
| 317 | tport_err: | 320 | tport_err: |
| 318 | transport_destroy_device(dev); | 321 | transport_destroy_device(dev); |
| 319 | put_device(dev); | 322 | put_device(dev); |
| 320 | ata_host_put(ap->host); | ||
| 321 | return error; | 323 | return error; |
| 322 | } | 324 | } |
| 323 | 325 | ||
| @@ -456,7 +458,9 @@ int ata_tlink_add(struct ata_link *link) · 132 unmodified lines | |||
| 456 | goto tlink_err; | 458 | goto tlink_err; |
| 457 | } | 459 | } |
| 458 | 460 | ||
| 459 | transport_add_device(dev); | 461 | error = transport_add_device(dev); |
| 462 | if (error) | ||
| 463 | goto tlink_transport_err; | ||
| 460 | transport_configure_device(dev); | 464 | transport_configure_device(dev); |
| 461 | 465 | ||
| 462 | ata_for_each_dev(ata_dev, link, ALL) { | 466 | ata_for_each_dev(ata_dev, link, ALL) { |
| @@ -471,6 +475,7 @@ int ata_tlink_add(struct ata_link *link) · 8 unmodified lines | |||
| 471 | ata_tdev_delete(ata_dev); | 475 | ata_tdev_delete(ata_dev); |
| 472 | } | 476 | } |
| 473 | transport_remove_device(dev); | 477 | transport_remove_device(dev); |
| 478 | tlink_transport_err: | ||
| 474 | device_del(dev); | 479 | device_del(dev); |
| 475 | tlink_err: | 480 | tlink_err: |
| 476 | transport_destroy_device(dev); | 481 | transport_destroy_device(dev); |
| @@ -708,7 +713,13 @@ static int ata_tdev_add(struct ata_device *ata_dev) · 231 unmodified lines | |||
| 708 | return error; | 713 | return error; |
| 709 | } | 714 | } |
| 710 | 715 | ||
| 711 | transport_add_device(dev); | 716 | error = transport_add_device(dev); |
| 717 | if (error) { | ||
| 718 | device_del(dev); | ||
| 719 | ata_tdev_free(ata_dev); | ||
| 720 | return error; | ||
| 721 | } | ||
| 722 | |||
| 712 | transport_configure_device(dev); | 723 | transport_configure_device(dev); |
| 713 | return 0; | 724 | return 0; |
| 714 | } | 725 | } |
| @@ -21,6 +21,7 @@ · 20 unmodified lines | |||
| 21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
| 22 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
| 23 | #include <linux/acpi.h> | 23 | #include <linux/acpi.h> |
| 24 | #include <linux/hyperv.h> | ||
| 24 | #include <clocksource/hyperv_timer.h> | 25 | #include <clocksource/hyperv_timer.h> |
| 25 | #include <asm/hyperv-tlfs.h> | 26 | #include <asm/hyperv-tlfs.h> |
| 26 | #include <asm/mshyperv.h> | 27 | #include <asm/mshyperv.h> |
| @@ -395,25 +396,25 @@ static u64 notrace read_hv_sched_clock_tsc(void) · 368 unmodified lines | |||
| 395 | 396 | ||
| 396 | static void suspend_hv_clock_tsc(struct clocksource *arg) | 397 | static void suspend_hv_clock_tsc(struct clocksource *arg) |
| 397 | { | 398 | { |
| 398 | u64 tsc_msr; | 399 | union hv_reference_tsc_msr tsc_msr; |
| 399 | 400 | ||
| 400 | /* Disable the TSC page */ | 401 | /* Disable the TSC page */ |
| 401 | tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC); | 402 | tsc_msr.as_uint64 = hv_get_register(HV_REGISTER_REFERENCE_TSC); |
| 402 | tsc_msr &= ~BIT_ULL(0); | 403 | tsc_msr.enable = 0; |
| 403 | hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr); | 404 | hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr.as_uint64); |
| 404 | } | 405 | } |
| 405 | 406 | ||
| 406 | 407 | ||
| 407 | static void resume_hv_clock_tsc(struct clocksource *arg) | 408 | static void resume_hv_clock_tsc(struct clocksource *arg) |
| 408 | { | 409 | { |
| 409 | phys_addr_t phys_addr = virt_to_phys(&tsc_pg); | 410 | phys_addr_t phys_addr = virt_to_phys(&tsc_pg); |
| 410 | u64 tsc_msr; | 411 | union hv_reference_tsc_msr tsc_msr; |
| 411 | 412 | ||
| 412 | /* Re-enable the TSC page */ | 413 | /* Re-enable the TSC page */ |
| 413 | tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC); | 414 | tsc_msr.as_uint64 = hv_get_register(HV_REGISTER_REFERENCE_TSC); |
| 414 | tsc_msr &= GENMASK_ULL(11, 0); | 415 | tsc_msr.enable = 1; |
| 415 | tsc_msr |= BIT_ULL(0) | (u64)phys_addr; | 416 | tsc_msr.pfn = HVPFN_DOWN(phys_addr); |
| 416 | hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr); | 417 | hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr.as_uint64); |
| 417 | } | 418 | } |
| 418 | 419 | ||
| 419 | #ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK | 420 | #ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK |
| @@ -495,7 +496,7 @@ static __always_inline void hv_setup_sched_clock(void *sched_clock) {} · 75 unmodified lines | |||
| 495 | 496 | ||
| 496 | static bool __init hv_init_tsc_clocksource(void) | 497 | static bool __init hv_init_tsc_clocksource(void) |
| 497 | { | 498 | { |
| 498 | u64 tsc_msr; | 499 | union hv_reference_tsc_msr tsc_msr; |
| 499 | phys_addr_t phys_addr; | 500 | phys_addr_t phys_addr; |
| 500 | 501 | ||
| 501 | if (!(ms_hyperv.features & HV_MSR_REFERENCE_TSC_AVAILABLE)) | 502 | if (!(ms_hyperv.features & HV_MSR_REFERENCE_TSC_AVAILABLE)) |
| @@ -530,10 +531,10 @@ static bool __init hv_init_tsc_clocksource(void) · 28 unmodified lines | |||
| 530 | * (which already has at least the low 12 bits set to zero since | 531 | * (which already has at least the low 12 bits set to zero since |
| 531 | * it is page aligned). Also set the "enable" bit, which is bit 0. | 532 | * it is page aligned). Also set the "enable" bit, which is bit 0. |
| 532 | */ | 533 | */ |
| 533 | tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC); | 534 | tsc_msr.as_uint64 = hv_get_register(HV_REGISTER_REFERENCE_TSC); |
| 534 | tsc_msr &= GENMASK_ULL(11, 0); | 535 | tsc_msr.enable = 1; |
| 535 | tsc_msr = tsc_msr | 0x1 | (u64)phys_addr; | 536 | tsc_msr.pfn = HVPFN_DOWN(phys_addr); |
| 536 | hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr); | 537 | hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr.as_uint64); |
| 537 | 538 | ||
| 538 | clocksource_register_hz(&hyperv_cs_tsc, NSEC_PER_SEC/100); | 539 | clocksource_register_hz(&hyperv_cs_tsc, NSEC_PER_SEC/100); |
| 539 | 540 | ||
| @@ -493,7 +493,7 @@ static struct dma_chan *admac_dma_of_xlate(struct of_phandle_args *dma_spec, · 492 unmodified lines | |||
| 493 | return NULL; | 493 | return NULL; |
| 494 | } | 494 | } |
| 495 | 495 | ||
| 496 | return &ad->channels[index].chan; | 496 | return dma_get_slave_channel(&ad->channels[index].chan); |
| 497 | } | 497 | } |
| 498 | 498 | ||
| 499 | static int admac_drain_reports(struct admac_data *ad, int channo) | 499 | static int admac_drain_reports(struct admac_data *ad, int channo) |
| @@ -256,6 +256,8 @@ static void atc_dostart(struct at_dma_chan *atchan, struct at_desc *first) · 255 unmodified lines | |||
| 256 | ATC_SPIP_BOUNDARY(first->boundary)); | 256 | ATC_SPIP_BOUNDARY(first->boundary)); |
| 257 | channel_writel(atchan, DPIP, ATC_DPIP_HOLE(first->dst_hole) | | 257 | channel_writel(atchan, DPIP, ATC_DPIP_HOLE(first->dst_hole) | |
| 258 | ATC_DPIP_BOUNDARY(first->boundary)); | 258 | ATC_DPIP_BOUNDARY(first->boundary)); |
| 259 | /* Don't allow CPU to reorder channel enable. */ | ||
| 260 | wmb(); | ||
| 259 | dma_writel(atdma, CHER, atchan->mask); | 261 | dma_writel(atdma, CHER, atchan->mask); |
| 260 | 262 | ||
| 261 | vdbg_dump_regs(atchan); | 263 | vdbg_dump_regs(atchan); |
| @@ -316,7 +318,8 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie) · 54 unmodified lines | |||
| 316 | struct at_desc *desc_first = atc_first_active(atchan); | 318 | struct at_desc *desc_first = atc_first_active(atchan); |
| 317 | struct at_desc *desc; | 319 | struct at_desc *desc; |
| 318 | int ret; | 320 | int ret; |
| 319 | u32 ctrla, dscr, trials; | 321 | u32 ctrla, dscr; |
| 322 | unsigned int i; | ||
| 320 | 323 | ||
| 321 | /* | 324 | /* |
| 322 | * If the cookie doesn't match to the currently running transfer then | 325 | * If the cookie doesn't match to the currently running transfer then |
| @@ -386,7 +389,7 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie) · 63 unmodified lines | |||
| 386 | dscr = channel_readl(atchan, DSCR); | 389 | dscr = channel_readl(atchan, DSCR); |
| 387 | rmb(); /* ensure DSCR is read before CTRLA */ | 390 | rmb(); /* ensure DSCR is read before CTRLA */ |
| 388 | ctrla = channel_readl(atchan, CTRLA); | 391 | ctrla = channel_readl(atchan, CTRLA); |
| 389 | for (trials = 0; trials < ATC_MAX_DSCR_TRIALS; ++trials) { | 392 | for (i = 0; i < ATC_MAX_DSCR_TRIALS; ++i) { |
| 390 | u32 new_dscr; | 393 | u32 new_dscr; |
| 391 | 394 | ||
| 392 | rmb(); /* ensure DSCR is read after CTRLA */ | 395 | rmb(); /* ensure DSCR is read after CTRLA */ |
| @@ -412,7 +415,7 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie) · 19 unmodified lines | |||
| 412 | rmb(); /* ensure DSCR is read before CTRLA */ | 415 | rmb(); /* ensure DSCR is read before CTRLA */ |
| 413 | ctrla = channel_readl(atchan, CTRLA); | 416 | ctrla = channel_readl(atchan, CTRLA); |
| 414 | } | 417 | } |
| 415 | if (unlikely(trials >= ATC_MAX_DSCR_TRIALS)) | 418 | if (unlikely(i == ATC_MAX_DSCR_TRIALS)) |
| 416 | return -ETIMEDOUT; | 419 | return -ETIMEDOUT; |
| 417 | 420 | ||
| 418 | /* for the first descriptor we can be more accurate */ | 421 | /* for the first descriptor we can be more accurate */ |
| @@ -462,18 +465,6 @@ atc_chain_complete(struct at_dma_chan *atchan, struct at_desc *desc) · 43 unmodified lines | |||
| 462 | if (!atc_chan_is_cyclic(atchan)) | 465 | if (!atc_chan_is_cyclic(atchan)) |
| 463 | dma_cookie_complete(txd); | 466 | dma_cookie_complete(txd); |
| 464 | 467 | ||
| 465 | /* If the transfer was a memset, free our temporary buffer */ | ||
| 466 | if (desc->memset_buffer) { | ||
| 467 | dma_pool_free(atdma->memset_pool, desc->memset_vaddr, | ||
| 468 | desc->memset_paddr); | ||
| 469 | desc->memset_buffer = false; | ||
| 470 | } | ||
| 471 | |||
| 472 | /* move children to free_list */ | ||
| 473 | list_splice_init(&desc->tx_list, &atchan->free_list); | ||
| 474 | /* move myself to free_list */ | ||
| 475 | list_move(&desc->desc_node, &atchan->free_list); | ||
| 476 | |||
| 477 | spin_unlock_irqrestore(&atchan->lock, flags); | 468 | spin_unlock_irqrestore(&atchan->lock, flags); |
| 478 | 469 | ||
| 479 | dma_descriptor_unmap(txd); | 470 | dma_descriptor_unmap(txd); |
| @@ -483,42 +474,20 @@ atc_chain_complete(struct at_dma_chan *atchan, struct at_desc *desc) · 3 unmodified lines | |||
| 483 | dmaengine_desc_get_callback_invoke(txd, NULL); | 474 | dmaengine_desc_get_callback_invoke(txd, NULL); |
| 484 | 475 | ||
| 485 | dma_run_dependencies(txd); | 476 | dma_run_dependencies(txd); |
| 486 | } | ||
| 487 | |||
| 488 | /** | ||
| 489 | * atc_complete_all - finish work for all transactions | ||
| 490 | * @atchan: channel to complete transactions for | ||
| 491 | * | ||
| 492 | * Eventually submit queued descriptors if any | ||
| 493 | * | ||
| 494 | * Assume channel is idle while calling this function | ||
| 495 | * Called with atchan->lock held and bh disabled | ||
| 496 | */ | ||
| 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"); | ||
| 504 | 477 | ||
| 505 | spin_lock_irqsave(&atchan->lock, flags); | 478 | spin_lock_irqsave(&atchan->lock, flags); |
| 506 | 479 | /* move children to free_list */ | |
| 507 | /* | 480 | list_splice_init(&desc->tx_list, &atchan->free_list); |
| 508 | * Submit queued descriptors ASAP, i.e. before we go through | 481 | /* add myself to free_list */ |
| 509 | * the completed ones. | 482 | list_add(&desc->desc_node, &atchan->free_list); |
| 510 | */ | ||
| 511 | if (!list_empty(&atchan->queue)) | ||
| 512 | atc_dostart(atchan, atc_first_queued(atchan)); | ||
| 513 | /* empty active_list now it is completed */ | ||
| 514 | list_splice_init(&atchan->active_list, &list); | ||
| 515 | /* empty queue list by moving descriptors (if any) to active_list */ | ||
| 516 | list_splice_init(&atchan->queue, &atchan->active_list); | ||
| 517 | |||
| 518 | spin_unlock_irqrestore(&atchan->lock, flags); | 483 | spin_unlock_irqrestore(&atchan->lock, flags); |
| 519 | 484 | ||
| 520 | list_for_each_entry_safe(desc, _desc, &list, desc_node) | 485 | /* If the transfer was a memset, free our temporary buffer */ |
| 521 | atc_chain_complete(atchan, desc); | 486 | if (desc->memset_buffer) { |
| 487 | dma_pool_free(atdma->memset_pool, desc->memset_vaddr, | ||
| 488 | desc->memset_paddr); | ||
| 489 | desc->memset_buffer = false; | ||
| 490 | } | ||
| 522 | } | 491 | } |
| 523 | 492 | ||
| 524 | /** | 493 | /** |
| @@ -527,26 +496,28 @@ static void atc_complete_all(struct at_dma_chan *atchan) · 2 unmodified lines | |||
| 527 | */ | 496 | */ |
| 528 | static void atc_advance_work(struct at_dma_chan *atchan) | 497 | static void atc_advance_work(struct at_dma_chan *atchan) |
| 529 | { | 498 | { |
| 499 | struct at_desc *desc; | ||
| 530 | unsigned long flags; | 500 | unsigned long flags; |
| 531 | int ret; | ||
| 532 | 501 | ||
| 533 | dev_vdbg(chan2dev(&atchan->chan_common), "advance_work\n"); | 502 | dev_vdbg(chan2dev(&atchan->chan_common), "advance_work\n"); |
| 534 | 503 | ||
| 535 | spin_lock_irqsave(&atchan->lock, flags); | 504 | spin_lock_irqsave(&atchan->lock, flags); |
| 536 | ret = atc_chan_is_enabled(atchan); | 505 | if (atc_chan_is_enabled(atchan) || list_empty(&atchan->active_list)) |
| 537 | spin_unlock_irqrestore(&atchan->lock, flags); | 506 | return spin_unlock_irqrestore(&atchan->lock, flags); |
| 538 | if (ret) | ||
| 539 | return; | ||
| 540 | |||
| 541 | if (list_empty(&atchan->active_list) || | ||
| 542 | list_is_singular(&atchan->active_list)) | ||
| 543 | return atc_complete_all(atchan); | ||
| 544 | 507 | ||
| 545 | atc_chain_complete(atchan, atc_first_active(atchan)); | 508 | desc = atc_first_active(atchan); |
| 509 | /* Remove the transfer node from the active list. */ | ||
| 510 | list_del_init(&desc->desc_node); | ||
| 511 | spin_unlock_irqrestore(&atchan->lock, flags); | ||
| 512 | atc_chain_complete(atchan, desc); | ||
| 546 | 513 | ||
| 547 | /* advance work */ | 514 | /* advance work */ |
| 548 | spin_lock_irqsave(&atchan->lock, flags); | 515 | spin_lock_irqsave(&atchan->lock, flags); |
| 549 | atc_dostart(atchan, atc_first_active(atchan)); | 516 | if (!list_empty(&atchan->active_list)) { |
| 517 | desc = atc_first_queued(atchan); | ||
| 518 | list_move_tail(&desc->desc_node, &atchan->active_list); | ||
| 519 | atc_dostart(atchan, desc); | ||
| 520 | } | ||
| 550 | spin_unlock_irqrestore(&atchan->lock, flags); | 521 | spin_unlock_irqrestore(&atchan->lock, flags); |
| 551 | } | 522 | } |
| 552 | 523 | ||
| @@ -558,6 +529,7 @@ static void atc_advance_work(struct at_dma_chan *atchan) · 5 unmodified lines | |||
| 558 | static void atc_handle_error(struct at_dma_chan *atchan) | 529 | static void atc_handle_error(struct at_dma_chan *atchan) |
| 559 | { | 530 | { |
| 560 | struct at_desc *bad_desc; | 531 | struct at_desc *bad_desc; |
| 532 | struct at_desc *desc; | ||
| 561 | struct at_desc *child; | 533 | struct at_desc *child; |
| 562 | unsigned long flags; | 534 | unsigned long flags; |
| 563 | 535 | ||
| @@ -570,13 +542,12 @@ static void atc_handle_error(struct at_dma_chan *atchan) · 6 unmodified lines | |||
| 570 | bad_desc = atc_first_active(atchan); | 542 | bad_desc = atc_first_active(atchan); |
| 571 | list_del_init(&bad_desc->desc_node); | 543 | list_del_init(&bad_desc->desc_node); |
| 572 | 544 | ||
| 573 | /* As we are stopped, take advantage to push queued descriptors | ||
| 574 | * in active_list */ | ||
| 575 | list_splice_init(&atchan->queue, atchan->active_list.prev); | ||
| 576 | |||
| 577 | /* Try to restart the controller */ | 545 | /* Try to restart the controller */ |
| 578 | if (!list_empty(&atchan->active_list)) | 546 | if (!list_empty(&atchan->active_list)) { |
| 579 | atc_dostart(atchan, atc_first_active(atchan)); | 547 | desc = atc_first_queued(atchan); |
| 548 | list_move_tail(&desc->desc_node, &atchan->active_list); | ||
| 549 | atc_dostart(atchan, desc); | ||
| 550 | } | ||
| 580 | 551 | ||
| 581 | /* | 552 | /* |
| 582 | * KERN_CRITICAL may seem harsh, but since this only happens | 553 | * KERN_CRITICAL may seem harsh, but since this only happens |
| @@ -691,19 +662,11 @@ static dma_cookie_t atc_tx_submit(struct dma_async_tx_descriptor *tx) · 108 unmodified lines | |||
| 691 | spin_lock_irqsave(&atchan->lock, flags); | 662 | spin_lock_irqsave(&atchan->lock, flags); |
| 692 | cookie = dma_cookie_assign(tx); | 663 | cookie = dma_cookie_assign(tx); |
| 693 | 664 | ||
| 694 | if (list_empty(&atchan->active_list)) { | 665 | list_add_tail(&desc->desc_node, &atchan->queue); |
| 695 | dev_vdbg(chan2dev(tx->chan), "tx_submit: started %u\n", | ||
| 696 | desc->txd.cookie); | ||
| 697 | atc_dostart(atchan, desc); | ||
| 698 | list_add_tail(&desc->desc_node, &atchan->active_list); | ||
| 699 | } else { | ||
| 700 | dev_vdbg(chan2dev(tx->chan), "tx_submit: queued %u\n", | ||
| 701 | desc->txd.cookie); | ||
| 702 | list_add_tail(&desc->desc_node, &atchan->queue); | ||
| 703 | } | ||
| 704 | |||
| 705 | spin_unlock_irqrestore(&atchan->lock, flags); | 666 | spin_unlock_irqrestore(&atchan->lock, flags); |
| 706 | 667 | ||
| 668 | dev_vdbg(chan2dev(tx->chan), "tx_submit: queued %u\n", | ||
| 669 | desc->txd.cookie); | ||
| 707 | return cookie; | 670 | return cookie; |
| 708 | } | 671 | } |
| 709 | 672 | ||
| @@ -1445,11 +1408,8 @@ static int atc_terminate_all(struct dma_chan *chan) · 735 unmodified lines | |||
| 1445 | struct at_dma_chan *atchan = to_at_dma_chan(chan); | 1408 | struct at_dma_chan *atchan = to_at_dma_chan(chan); |
| 1446 | struct at_dma *atdma = to_at_dma(chan->device); | 1409 | struct at_dma *atdma = to_at_dma(chan->device); |
| 1447 | int chan_id = atchan->chan_common.chan_id; | 1410 | int chan_id = atchan->chan_common.chan_id; |
| 1448 | struct at_desc *desc, *_desc; | ||
| 1449 | unsigned long flags; | 1411 | unsigned long flags; |
| 1450 | 1412 | ||
| 1451 | LIST_HEAD(list); | ||
| 1452 | |||
| 1453 | dev_vdbg(chan2dev(chan), "%s\n", __func__); | 1413 | dev_vdbg(chan2dev(chan), "%s\n", __func__); |
| 1454 | 1414 | ||
| 1455 | /* | 1415 | /* |
| @@ -1468,19 +1428,15 @@ static int atc_terminate_all(struct dma_chan *chan) · 12 unmodified lines | |||
| 1468 | cpu_relax(); | 1428 | cpu_relax(); |
| 1469 | 1429 | ||
| 1470 | /* active_list entries will end up before queued entries */ | 1430 | /* active_list entries will end up before queued entries */ |
| 1471 | list_splice_init(&atchan->queue, &list); | 1431 | list_splice_tail_init(&atchan->queue, &atchan->free_list); |
| 1472 | list_splice_init(&atchan->active_list, &list); | 1432 | list_splice_tail_init(&atchan->active_list, &atchan->free_list); |
| 1473 | |||
| 1474 | spin_unlock_irqrestore(&atchan->lock, flags); | ||
| 1475 | |||
| 1476 | /* Flush all pending and queued descriptors */ | ||
| 1477 | list_for_each_entry_safe(desc, _desc, &list, desc_node) | ||
| 1478 | atc_chain_complete(atchan, desc); | ||
| 1479 | 1433 | ||
| 1480 | clear_bit(ATC_IS_PAUSED, &atchan->status); | 1434 | clear_bit(ATC_IS_PAUSED, &atchan->status); |
| 1481 | /* if channel dedicated to cyclic operations, free it */ | 1435 | /* if channel dedicated to cyclic operations, free it */ |
| 1482 | clear_bit(ATC_IS_CYCLIC, &atchan->status); | 1436 | clear_bit(ATC_IS_CYCLIC, &atchan->status); |
| 1483 | 1437 | ||
| 1438 | spin_unlock_irqrestore(&atchan->lock, flags); | ||
| 1439 | |||
| 1484 | return 0; | 1440 | return 0; |
| 1485 | } | 1441 | } |
| 1486 | 1442 | ||
| @@ -1535,20 +1491,26 @@ atc_tx_status(struct dma_chan *chan, · 48 unmodified lines | |||
| 1535 | } | 1491 | } |
| 1536 | 1492 | ||
| 1537 | /** | 1493 | /** |
| 1538 | * atc_issue_pending - try to finish work | 1494 | * atc_issue_pending - takes the first transaction descriptor in the pending |
| 1495 | * queue and starts the transfer. | ||
| 1539 | * @chan: target DMA channel | 1496 | * @chan: target DMA channel |
| 1540 | */ | 1497 | */ |
| 1541 | static void atc_issue_pending(struct dma_chan *chan) | 1498 | static void atc_issue_pending(struct dma_chan *chan) |
| 1542 | { | 1499 | { |
| 1543 | struct at_dma_chan *atchan = to_at_dma_chan(chan); | 1500 | struct at_dma_chan *atchan = to_at_dma_chan(chan); |
| 1501 | struct at_desc *desc; | ||
| 1502 | unsigned long flags; | ||
| 1544 | 1503 | ||
| 1545 | dev_vdbg(chan2dev(chan), "issue_pending\n"); | 1504 | dev_vdbg(chan2dev(chan), "issue_pending\n"); |
| 1546 | 1505 | ||
| 1547 | /* Not needed for cyclic transfers */ | 1506 | spin_lock_irqsave(&atchan->lock, flags); |
| 1548 | if (atc_chan_is_cyclic(atchan)) | 1507 | if (atc_chan_is_enabled(atchan) || list_empty(&atchan->queue)) |
| 1549 | return; | 1508 | return spin_unlock_irqrestore(&atchan->lock, flags); |
| 1550 | 1509 | ||
| 1551 | atc_advance_work(atchan); | 1510 | desc = atc_first_queued(atchan); |
| 1511 | list_move_tail(&desc->desc_node, &atchan->active_list); | ||
| 1512 | atc_dostart(atchan, desc); | ||
| 1513 | spin_unlock_irqrestore(&atchan->lock, flags); | ||
| 1552 | } | 1514 | } |
| 1553 | 1515 | ||
| 1554 | /** | 1516 | /** |
| @@ -1966,7 +1928,11 @@ static int __init at_dma_probe(struct platform_device *pdev) · 411 unmodified lines | |||
| 1966 | dma_has_cap(DMA_SLAVE, atdma->dma_common.cap_mask) ? "slave " : "", | 1928 | dma_has_cap(DMA_SLAVE, atdma->dma_common.cap_mask) ? "slave " : "", |
| 1967 | plat_dat->nr_channels); | 1929 | plat_dat->nr_channels); |
| 1968 | 1930 | ||
| 1969 | dma_async_device_register(&atdma->dma_common); | 1931 | err = dma_async_device_register(&atdma->dma_common); |
| 1932 | if (err) { | ||
| 1933 | dev_err(&pdev->dev, "Unable to register: %d.\n", err); | ||
| 1934 | goto err_dma_async_device_register; | ||
| 1935 | } | ||
| 1970 | 1936 | ||
| 1971 | /* | 1937 | /* |
| 1972 | * Do not return an error if the dmac node is not present in order to | 1938 | * Do not return an error if the dmac node is not present in order to |
| @@ -1986,6 +1952,7 @@ static int __init at_dma_probe(struct platform_device *pdev) · 13 unmodified lines | |||
| 1986 | 1952 | ||
| 1987 | err_of_dma_controller_register: | 1953 | err_of_dma_controller_register: |
| 1988 | dma_async_device_unregister(&atdma->dma_common); | 1954 | dma_async_device_unregister(&atdma->dma_common); |
| 1955 | err_dma_async_device_register: | ||
| 1989 | dma_pool_destroy(atdma->memset_pool); | 1956 | dma_pool_destroy(atdma->memset_pool); |
| 1990 | err_memset_pool_create: | 1957 | err_memset_pool_create: |
| 1991 | dma_pool_destroy(atdma->dma_desc_pool); | 1958 | dma_pool_destroy(atdma->dma_desc_pool); |
| @@ -186,13 +186,13 @@ · 185 unmodified lines | |||
| 186 | /* LLI == Linked List Item; aka DMA buffer descriptor */ | 186 | /* LLI == Linked List Item; aka DMA buffer descriptor */ |
| 187 | struct at_lli { | 187 | struct at_lli { |
| 188 | /* values that are not changed by hardware */ | 188 | /* values that are not changed by hardware */ |
| 189 | dma_addr_t saddr; | 189 | u32 saddr; |
| 190 | dma_addr_t daddr; | 190 | u32 daddr; |
| 191 | /* value that may get written back: */ | 191 | /* value that may get written back: */ |
| 192 | u32 ctrla; | 192 | u32 ctrla; |
| 193 | /* more values that are not changed by hardware */ | 193 | /* more values that are not changed by hardware */ |
| 194 | u32 ctrlb; | 194 | u32 ctrlb; |
| 195 | dma_addr_t dscr; /* chain to next lli */ | 195 | u32 dscr; /* chain to next lli */ |
| 196 | }; | 196 | }; |
| 197 | 197 | ||
| 198 | /** | 198 | /** |
| @@ -312,6 +312,24 @@ static int idxd_user_drv_probe(struct idxd_dev *idxd_dev) · 311 unmodified lines | |||
| 312 | if (idxd->state != IDXD_DEV_ENABLED) | 312 | if (idxd->state != IDXD_DEV_ENABLED) |
| 313 | return -ENXIO; | 313 | return -ENXIO; |
| 314 | 314 | ||
| 315 | /* | ||
| 316 | * User type WQ is enabled only when SVA is enabled for two reasons: | ||
| 317 | * - If no IOMMU or IOMMU Passthrough without SVA, userspace | ||
| 318 | * can directly access physical address through the WQ. | ||
| 319 | * - The IDXD cdev driver does not provide any ways to pin | ||
| 320 | * user pages and translate the address from user VA to IOVA or | ||
| 321 | * PA without IOMMU SVA. Therefore the application has no way | ||
| 322 | * to instruct the device to perform DMA function. This makes | ||
| 323 | * the cdev not usable for normal application usage. | ||
| 324 | */ | ||
| 325 | if (!device_user_pasid_enabled(idxd)) { | ||
| 326 | idxd->cmd_status = IDXD_SCMD_WQ_USER_NO_IOMMU; | ||
| 327 | dev_dbg(&idxd->pdev->dev, | ||
| 328 | "User type WQ cannot be enabled without SVA.\n"); | ||
| 329 | |||
| 330 | return -EOPNOTSUPP; | ||
| 331 | } | ||
| 332 | |||
| 315 | mutex_lock(&wq->wq_lock); | 333 | mutex_lock(&wq->wq_lock); |
| 316 | wq->type = IDXD_WQT_USER; | 334 | wq->type = IDXD_WQT_USER; |
| 317 | rc = drv_enable_wq(wq); | 335 | rc = drv_enable_wq(wq); |
| @@ -390,7 +390,7 @@ static void idxd_wq_disable_cleanup(struct idxd_wq *wq) · 389 unmodified lines | |||
| 390 | clear_bit(WQ_FLAG_ATS_DISABLE, &wq->flags); | 390 | clear_bit(WQ_FLAG_ATS_DISABLE, &wq->flags); |
| 391 | memset(wq->name, 0, WQ_NAME_SIZE); | 391 | memset(wq->name, 0, WQ_NAME_SIZE); |
| 392 | wq->max_xfer_bytes = WQ_DEFAULT_MAX_XFER; | 392 | wq->max_xfer_bytes = WQ_DEFAULT_MAX_XFER; |
| 393 | wq->max_batch_size = WQ_DEFAULT_MAX_BATCH; | 393 | idxd_wq_set_max_batch_size(idxd->data->type, wq, WQ_DEFAULT_MAX_BATCH); |
| 394 | if (wq->opcap_bmap) | 394 | if (wq->opcap_bmap) |
| 395 | bitmap_copy(wq->opcap_bmap, idxd->opcap_bmap, IDXD_MAX_OPCAP_BITS); | 395 | bitmap_copy(wq->opcap_bmap, idxd->opcap_bmap, IDXD_MAX_OPCAP_BITS); |
| 396 | } | 396 | } |
| @@ -730,13 +730,21 @@ static void idxd_device_wqs_clear_state(struct idxd_device *idxd) · 333 unmodified lines | |||
| 730 | 730 | ||
| 731 | void idxd_device_clear_state(struct idxd_device *idxd) | 731 | void idxd_device_clear_state(struct idxd_device *idxd) |
| 732 | { | 732 | { |
| 733 | if (!test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags)) | 733 | /* IDXD is always disabled. Other states are cleared only when IDXD is configurable. */ |
| 734 | return; | 734 | if (test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags)) { |
| 735 | /* | ||
| 736 | * Clearing wq state is protected by wq lock. | ||
| 737 | * So no need to be protected by device lock. | ||
| 738 | */ | ||
| 739 | idxd_device_wqs_clear_state(idxd); | ||
| 740 | |||
| 741 | spin_lock(&idxd->dev_lock); | ||
| 742 | idxd_groups_clear_state(idxd); | ||
| 743 | idxd_engines_clear_state(idxd); | ||
| 744 | } else { | ||
| 745 | spin_lock(&idxd->dev_lock); | ||
| 746 | } | ||
| 735 | 747 | ||
| 736 | idxd_device_wqs_clear_state(idxd); | ||
| 737 | spin_lock(&idxd->dev_lock); | ||
| 738 | idxd_groups_clear_state(idxd); | ||
| 739 | idxd_engines_clear_state(idxd); | ||
| 740 | idxd->state = IDXD_DEV_DISABLED; | 748 | idxd->state = IDXD_DEV_DISABLED; |
| 741 | spin_unlock(&idxd->dev_lock); | 749 | spin_unlock(&idxd->dev_lock); |
| 742 | } | 750 | } |
| @@ -869,7 +877,7 @@ static int idxd_wq_config_write(struct idxd_wq *wq) · 126 unmodified lines | |||
| 869 | 877 | ||
| 870 | /* bytes 12-15 */ | 878 | /* bytes 12-15 */ |
| 871 | wq->wqcfg->max_xfer_shift = ilog2(wq->max_xfer_bytes); | 879 | wq->wqcfg->max_xfer_shift = ilog2(wq->max_xfer_bytes); |
| 872 | wq->wqcfg->max_batch_shift = ilog2(wq->max_batch_size); | 880 | idxd_wqcfg_set_max_batch_shift(idxd->data->type, wq->wqcfg, ilog2(wq->max_batch_size)); |
| 873 | 881 | ||
| 874 | /* bytes 32-63 */ | 882 | /* bytes 32-63 */ |
| 875 | if (idxd->hw.wq_cap.op_config && wq->opcap_bmap) { | 883 | if (idxd->hw.wq_cap.op_config && wq->opcap_bmap) { |
| @@ -1051,7 +1059,7 @@ static int idxd_wq_load_config(struct idxd_wq *wq) · 175 unmodified lines | |||
| 1051 | wq->priority = wq->wqcfg->priority; | 1059 | wq->priority = wq->wqcfg->priority; |
| 1052 | 1060 | ||
| 1053 | wq->max_xfer_bytes = 1ULL << wq->wqcfg->max_xfer_shift; | 1061 | wq->max_xfer_bytes = 1ULL << wq->wqcfg->max_xfer_shift; |
| 1054 | wq->max_batch_size = 1ULL << wq->wqcfg->max_batch_shift; | 1062 | idxd_wq_set_max_batch_size(idxd->data->type, wq, 1U << wq->wqcfg->max_batch_shift); |
| 1055 | 1063 | ||
| 1056 | for (i = 0; i < WQCFG_STRIDES(idxd); i++) { | 1064 | for (i = 0; i < WQCFG_STRIDES(idxd); i++) { |
| 1057 | wqcfg_offset = WQCFG_OFFSET(idxd, wq->id, i); | 1065 | wqcfg_offset = WQCFG_OFFSET(idxd, wq->id, i); |
| @@ -548,6 +548,38 @@ static inline int idxd_wq_refcount(struct idxd_wq *wq) · 547 unmodified lines | |||
| 548 | return wq->client_count; | 548 | return wq->client_count; |
| 549 | }; | 549 | }; |
| 550 | 550 | ||
| 551 | /* | ||
| 552 | * Intel IAA does not support batch processing. | ||
| 553 | * The max batch size of device, max batch size of wq and | ||
| 554 | * max batch shift of wqcfg should be always 0 on IAA. | ||
| 555 | */ | ||
| 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 | |||
| 551 | int __must_check __idxd_driver_register(struct idxd_device_driver *idxd_drv, | 583 | int __must_check __idxd_driver_register(struct idxd_device_driver *idxd_drv, |
| 552 | struct module *module, const char *mod_name); | 584 | struct module *module, const char *mod_name); |
| 553 | #define idxd_driver_register(driver) \ | 585 | #define idxd_driver_register(driver) \ |
| @@ -183,7 +183,7 @@ static int idxd_setup_wqs(struct idxd_device *idxd) · 182 unmodified lines | |||
| 183 | init_completion(&wq->wq_dead); | 183 | init_completion(&wq->wq_dead); |
| 184 | init_completion(&wq->wq_resurrect); | 184 | init_completion(&wq->wq_resurrect); |
| 185 | wq->max_xfer_bytes = WQ_DEFAULT_MAX_XFER; | 185 | wq->max_xfer_bytes = WQ_DEFAULT_MAX_XFER; |
| 186 | wq->max_batch_size = WQ_DEFAULT_MAX_BATCH; | 186 | idxd_wq_set_max_batch_size(idxd->data->type, wq, WQ_DEFAULT_MAX_BATCH); |
| 187 | wq->enqcmds_retries = IDXD_ENQCMDS_RETRIES; | 187 | wq->enqcmds_retries = IDXD_ENQCMDS_RETRIES; |
| 188 | wq->wqcfg = kzalloc_node(idxd->wqcfg_size, GFP_KERNEL, dev_to_node(dev)); | 188 | wq->wqcfg = kzalloc_node(idxd->wqcfg_size, GFP_KERNEL, dev_to_node(dev)); |
| 189 | if (!wq->wqcfg) { | 189 | if (!wq->wqcfg) { |
| @@ -418,7 +418,7 @@ static void idxd_read_caps(struct idxd_device *idxd) · 228 unmodified lines | |||
| 418 | 418 | ||
| 419 | idxd->max_xfer_bytes = 1ULL << idxd->hw.gen_cap.max_xfer_shift; | 419 | idxd->max_xfer_bytes = 1ULL << idxd->hw.gen_cap.max_xfer_shift; |
| 420 | dev_dbg(dev, "max xfer size: %llu bytes\n", idxd->max_xfer_bytes); | 420 | dev_dbg(dev, "max xfer size: %llu bytes\n", idxd->max_xfer_bytes); |
| 421 | idxd->max_batch_size = 1U << idxd->hw.gen_cap.max_batch_shift; | 421 | idxd_set_max_batch_size(idxd->data->type, idxd, 1U << idxd->hw.gen_cap.max_batch_shift); |
| 422 | dev_dbg(dev, "max batch size: %u\n", idxd->max_batch_size); | 422 | dev_dbg(dev, "max batch size: %u\n", idxd->max_batch_size); |
| 423 | if (idxd->hw.gen_cap.config_en) | 423 | if (idxd->hw.gen_cap.config_en) |
| 424 | set_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags); | 424 | set_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags); |
| @@ -1046,7 +1046,7 @@ static ssize_t wq_max_batch_size_store(struct device *dev, struct device_attribu · 1045 unmodified lines | |||
| 1046 | if (batch_size > idxd->max_batch_size) | 1046 | if (batch_size > idxd->max_batch_size) |
| 1047 | return -EINVAL; | 1047 | return -EINVAL; |
| 1048 | 1048 | ||
| 1049 | wq->max_batch_size = (u32)batch_size; | 1049 | idxd_wq_set_max_batch_size(idxd->data->type, wq, (u32)batch_size); |
| 1050 | 1050 | ||
| 1051 | return count; | 1051 | return count; |
| 1052 | } | 1052 | } |
| @@ -893,6 +893,7 @@ static int mv_xor_v2_remove(struct platform_device *pdev) · 892 unmodified lines | |||
| 893 | tasklet_kill(&xor_dev->irq_tasklet); | 893 | tasklet_kill(&xor_dev->irq_tasklet); |
| 894 | 894 | ||
| 895 | clk_disable_unprepare(xor_dev->clk); | 895 | clk_disable_unprepare(xor_dev->clk); |
| 896 | clk_disable_unprepare(xor_dev->reg_clk); | ||
| 896 | 897 | ||
| 897 | return 0; | 898 | return 0; |
| 898 | } | 899 | } |
| @@ -1247,14 +1247,14 @@ static int pxad_init_phys(struct platform_device *op, · 1246 unmodified lines | |||
| 1247 | return -ENOMEM; | 1247 | return -ENOMEM; |
| 1248 | 1248 | ||
| 1249 | for (i = 0; i < nb_phy_chans; i++) | 1249 | for (i = 0; i < nb_phy_chans; i++) |
| 1250 | if (platform_get_irq(op, i) > 0) | 1250 | if (platform_get_irq_optional(op, i) > 0) |
| 1251 | nr_irq++; | 1251 | nr_irq++; |
| 1252 | 1252 | ||
| 1253 | for (i = 0; i < nb_phy_chans; i++) { | 1253 | for (i = 0; i < nb_phy_chans; i++) { |
| 1254 | phy = &pdev->phys[i]; | 1254 | phy = &pdev->phys[i]; |
| 1255 | phy->base = pdev->base; | 1255 | phy->base = pdev->base; |
| 1256 | phy->idx = i; | 1256 | phy->idx = i; |
| 1257 | irq = platform_get_irq(op, i); | 1257 | irq = platform_get_irq_optional(op, i); |
| 1258 | if ((nr_irq > 1) && (irq > 0)) | 1258 | if ((nr_irq > 1) && (irq > 0)) |
| 1259 | ret = devm_request_irq(&op->dev, irq, | 1259 | ret = devm_request_irq(&op->dev, irq, |
| 1260 | pxad_chan_handler, | 1260 | pxad_chan_handler, |
| @@ -675,6 +675,8 @@ static void stm32_dma_handle_chan_paused(struct stm32_dma_chan *chan) · 674 unmodified lines | |||
| 675 | 675 | ||
| 676 | chan->chan_reg.dma_sndtr = stm32_dma_read(dmadev, STM32_DMA_SNDTR(chan->id)); | 676 | chan->chan_reg.dma_sndtr = stm32_dma_read(dmadev, STM32_DMA_SNDTR(chan->id)); |
| 677 | 677 | ||
| 678 | chan->status = DMA_PAUSED; | ||
| 679 | |||
| 678 | dev_dbg(chan2dev(chan), "vchan %pK: paused\n", &chan->vchan); | 680 | dev_dbg(chan2dev(chan), "vchan %pK: paused\n", &chan->vchan); |
| 679 | } | 681 | } |
| 680 | 682 | ||
| @@ -789,9 +791,7 @@ static irqreturn_t stm32_dma_chan_irq(int irq, void *devid) · 108 unmodified lines | |||
| 789 | if (status & STM32_DMA_TCI) { | 791 | if (status & STM32_DMA_TCI) { |
| 790 | stm32_dma_irq_clear(chan, STM32_DMA_TCI); | 792 | stm32_dma_irq_clear(chan, STM32_DMA_TCI); |
| 791 | if (scr & STM32_DMA_SCR_TCIE) { | 793 | if (scr & STM32_DMA_SCR_TCIE) { |
| 792 | if (chan->status == DMA_PAUSED && !(scr & STM32_DMA_SCR_EN)) | 794 | if (chan->status != DMA_PAUSED) |
| 793 | stm32_dma_handle_chan_paused(chan); | ||
| 794 | else | ||
| 795 | stm32_dma_handle_chan_done(chan, scr); | 795 | stm32_dma_handle_chan_done(chan, scr); |
| 796 | } | 796 | } |
| 797 | status &= ~STM32_DMA_TCI; | 797 | status &= ~STM32_DMA_TCI; |
| @@ -838,13 +838,11 @@ static int stm32_dma_pause(struct dma_chan *c) · 40 unmodified lines | |||
| 838 | return -EPERM; | 838 | return -EPERM; |
| 839 | 839 | ||
| 840 | spin_lock_irqsave(&chan->vchan.lock, flags); | 840 | spin_lock_irqsave(&chan->vchan.lock, flags); |
| 841 | |||
| 841 | ret = stm32_dma_disable_chan(chan); | 842 | ret = stm32_dma_disable_chan(chan); |
| 842 | /* | ||
| 843 | * A transfer complete flag is set to indicate the end of transfer due to the stream | ||
| 844 | * interruption, so wait for interrupt | ||
| 845 | */ | ||
| 846 | if (!ret) | 843 | if (!ret) |
| 847 | chan->status = DMA_PAUSED; | 844 | stm32_dma_handle_chan_paused(chan); |
| 845 | |||
| 848 | spin_unlock_irqrestore(&chan->vchan.lock, flags); | 846 | spin_unlock_irqrestore(&chan->vchan.lock, flags); |
| 849 | 847 | ||
| 850 | return ret; | 848 | return ret; |
| @@ -1539,6 +1539,7 @@ static struct dma_chan *stm32_mdma_of_xlate(struct of_phandle_args *dma_spec, · 1538 unmodified lines | |||
| 1539 | return NULL; | 1539 | return NULL; |
| 1540 | } | 1540 | } |
| 1541 | 1541 | ||
| 1542 | memset(&config, 0, sizeof(config)); | ||
| 1542 | config.request = dma_spec->args[0]; | 1543 | config.request = dma_spec->args[0]; |
| 1543 | config.priority_level = dma_spec->args[1]; | 1544 | config.priority_level = dma_spec->args[1]; |
| 1544 | config.transfer_config = dma_spec->args[2]; | 1545 | config.transfer_config = dma_spec->args[2]; |
| @@ -299,6 +299,7 @@ struct k3_udma_glue_tx_channel *k3_udma_glue_request_tx_chn(struct device *dev, · 298 unmodified lines | |||
| 299 | ret = device_register(&tx_chn->common.chan_dev); | 299 | ret = device_register(&tx_chn->common.chan_dev); |
| 300 | if (ret) { | 300 | if (ret) { |
| 301 | dev_err(dev, "Channel Device registration failed %d\n", ret); | 301 | dev_err(dev, "Channel Device registration failed %d\n", ret); |
| 302 | put_device(&tx_chn->common.chan_dev); | ||
| 302 | tx_chn->common.chan_dev.parent = NULL; | 303 | tx_chn->common.chan_dev.parent = NULL; |
| 303 | goto err; | 304 | goto err; |
| 304 | } | 305 | } |
| @@ -917,6 +918,7 @@ k3_udma_glue_request_rx_chn_priv(struct device *dev, const char *name, · 612 unmodified lines | |||
| 917 | ret = device_register(&rx_chn->common.chan_dev); | 918 | ret = device_register(&rx_chn->common.chan_dev); |
| 918 | if (ret) { | 919 | if (ret) { |
| 919 | dev_err(dev, "Channel Device registration failed %d\n", ret); | 920 | dev_err(dev, "Channel Device registration failed %d\n", ret); |
| 921 | put_device(&rx_chn->common.chan_dev); | ||
| 920 | rx_chn->common.chan_dev.parent = NULL; | 922 | rx_chn->common.chan_dev.parent = NULL; |
| 921 | goto err; | 923 | goto err; |
| 922 | } | 924 | } |
| @@ -1048,6 +1050,7 @@ k3_udma_glue_request_remote_rx_chn(struct device *dev, const char *name, · 125 unmodified lines | |||
| 1048 | ret = device_register(&rx_chn->common.chan_dev); | 1050 | ret = device_register(&rx_chn->common.chan_dev); |
| 1049 | if (ret) { | 1051 | if (ret) { |
| 1050 | dev_err(dev, "Channel Device registration failed %d\n", ret); | 1052 | dev_err(dev, "Channel Device registration failed %d\n", ret); |
| 1053 | put_device(&rx_chn->common.chan_dev); | ||
| 1051 | rx_chn->common.chan_dev.parent = NULL; | 1054 | rx_chn->common.chan_dev.parent = NULL; |
| 1052 | goto err; | 1055 | goto err; |
| 1053 | } | 1056 | } |
| @@ -82,7 +82,7 @@ $(obj)/lib-%.o: $(srctree)/lib/%.c FORCE · 81 unmodified lines | |||
| 82 | lib-$(CONFIG_EFI_GENERIC_STUB) += efi-stub.o string.o intrinsics.o systable.o | 82 | lib-$(CONFIG_EFI_GENERIC_STUB) += efi-stub.o string.o intrinsics.o systable.o |
| 83 | 83 | ||
| 84 | lib-$(CONFIG_ARM) += arm32-stub.o | 84 | lib-$(CONFIG_ARM) += arm32-stub.o |
| 85 | lib-$(CONFIG_ARM64) += arm64-stub.o | 85 | lib-$(CONFIG_ARM64) += arm64-stub.o smbios.o |
| 86 | lib-$(CONFIG_X86) += x86-stub.o | 86 | lib-$(CONFIG_X86) += x86-stub.o |
| 87 | lib-$(CONFIG_RISCV) += riscv-stub.o | 87 | lib-$(CONFIG_RISCV) += riscv-stub.o |
| 88 | lib-$(CONFIG_LOONGARCH) += loongarch-stub.o | 88 | lib-$(CONFIG_LOONGARCH) += loongarch-stub.o |
| @@ -15,6 +15,21 @@ · 14 unmodified lines | |||
| 15 | 15 | ||
| 16 | #include "efistub.h" | 16 | #include "efistub.h" |
| 17 | 17 | ||
| 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 | |||
| 18 | efi_status_t check_platform_features(void) | 33 | efi_status_t check_platform_features(void) |
| 19 | { | 34 | { |
| 20 | u64 tg; | 35 | u64 tg; |
| @@ -24,7 +39,7 @@ efi_status_t check_platform_features(void) · 3 unmodified lines | |||
| 24 | * UEFI runtime regions 1:1 and so calling SetVirtualAddressMap() is | 39 | * UEFI runtime regions 1:1 and so calling SetVirtualAddressMap() is |
| 25 | * unnecessary. | 40 | * unnecessary. |
| 26 | */ | 41 | */ |
| 27 | if (VA_BITS_MIN >= 48) | 42 | if (VA_BITS_MIN >= 48 && !system_needs_vamap()) |
| 28 | efi_novamap = true; | 43 | efi_novamap = true; |
| 29 | 44 | ||
| 30 | /* UEFI mandates support for 4 KB granularity, no need to check */ | 45 | /* UEFI mandates support for 4 KB granularity, no need to check */ |
| @@ -975,4 +975,32 @@ efi_enable_reset_attack_mitigation(void) { } · 974 unmodified lines | |||
| 975 | 975 | ||
| 976 | void efi_retrieve_tpm2_eventlog(void); | 976 | void efi_retrieve_tpm2_eventlog(void); |
| 977 | 977 | ||
| 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 | |||
| 978 | #endif | 1006 | #endif |
| @@ -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 | } | ||
| @@ -992,6 +992,7 @@ out_free_user_pages: · 991 unmodified lines | |||
| 992 | kvfree(e->user_pages); | 992 | kvfree(e->user_pages); |
| 993 | e->user_pages = NULL; | 993 | e->user_pages = NULL; |
| 994 | } | 994 | } |
| 995 | mutex_unlock(&p->bo_list->bo_list_mutex); | ||
| 995 | return r; | 996 | return r; |
| 996 | } | 997 | } |
| 997 | 998 | ||
| @@ -143,32 +143,6 @@ int amdgpu_vm_set_pasid(struct amdgpu_device *adev, struct amdgpu_vm *vm, · 142 unmodified lines | |||
| 143 | return 0; | 143 | return 0; |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | /* | ||
| 147 | * vm eviction_lock can be taken in MMU notifiers. Make sure no reclaim-FS | ||
| 148 | * happens while holding this lock anywhere to prevent deadlocks when | ||
| 149 | * an MMU notifier runs in reclaim-FS context. | ||
| 150 | */ | ||
| 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 | |||
| 172 | /** | 146 | /** |
| 173 | * amdgpu_vm_bo_evicted - vm_bo is evicted | 147 | * amdgpu_vm_bo_evicted - vm_bo is evicted |
| 174 | * | 148 | * |
| @@ -492,7 +492,48 @@ void amdgpu_debugfs_vm_bo_info(struct amdgpu_vm *vm, struct seq_file *m); · 491 unmodified lines | |||
| 492 | */ | 492 | */ |
| 493 | static inline uint64_t amdgpu_vm_tlb_seq(struct amdgpu_vm *vm) | 493 | static inline uint64_t amdgpu_vm_tlb_seq(struct amdgpu_vm *vm) |
| 494 | { | 494 | { |
| 495 | unsigned long flags; | ||
| 496 | spinlock_t *lock; | ||
| 497 | |||
| 498 | /* | ||
| 499 | * Workaround to stop racing between the fence signaling and handling | ||
| 500 | * the cb. The lock is static after initially setting it up, just make | ||
| 501 | * sure that the dma_fence structure isn't freed up. | ||
| 502 | */ | ||
| 503 | rcu_read_lock(); | ||
| 504 | lock = vm->last_tlb_flush->lock; | ||
| 505 | rcu_read_unlock(); | ||
| 506 | |||
| 507 | spin_lock_irqsave(lock, flags); | ||
| 508 | spin_unlock_irqrestore(lock, flags); | ||
| 509 | |||
| 495 | return atomic64_read(&vm->tlb_seq); | 510 | return atomic64_read(&vm->tlb_seq); |
| 496 | } | 511 | } |
| 497 | 512 | ||
| 513 | /* | ||
| 514 | * vm eviction_lock can be taken in MMU notifiers. Make sure no reclaim-FS | ||
| 515 | * happens while holding this lock anywhere to prevent deadlocks when | ||
| 516 | * an MMU notifier runs in reclaim-FS context. | ||
| 517 | */ | ||
| 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 | |||
| 498 | #endif | 539 | #endif |
| @@ -597,7 +597,9 @@ static int amdgpu_vm_pt_alloc(struct amdgpu_device *adev, · 596 unmodified lines | |||
| 597 | if (entry->bo) | 597 | if (entry->bo) |
| 598 | return 0; | 598 | return 0; |
| 599 | 599 | ||
| 600 | amdgpu_vm_eviction_unlock(vm); | ||
| 600 | r = amdgpu_vm_pt_create(adev, vm, cursor->level, immediate, &pt); | 601 | r = amdgpu_vm_pt_create(adev, vm, cursor->level, immediate, &pt); |
| 602 | amdgpu_vm_eviction_lock(vm); | ||
| 601 | if (r) | 603 | if (r) |
| 602 | return r; | 604 | return r; |
| 603 | 605 | ||
| @@ -435,7 +435,7 @@ static int amdgpu_vram_mgr_new(struct ttm_resource_manager *man, · 434 unmodified lines | |||
| 435 | if (place->flags & TTM_PL_FLAG_TOPDOWN) | 435 | if (place->flags & TTM_PL_FLAG_TOPDOWN) |
| 436 | vres->flags |= DRM_BUDDY_TOPDOWN_ALLOCATION; | 436 | vres->flags |= DRM_BUDDY_TOPDOWN_ALLOCATION; |
| 437 | 437 | ||
| 438 | if (fpfn || lpfn != man->size) | 438 | if (fpfn || lpfn != mgr->mm.size) |
| 439 | /* Allocate blocks in desired range */ | 439 | /* Allocate blocks in desired range */ |
| 440 | vres->flags |= DRM_BUDDY_RANGE_ALLOCATION; | 440 | vres->flags |= DRM_BUDDY_RANGE_ALLOCATION; |
| 441 | 441 | ||
| @@ -1950,7 +1950,7 @@ static int criu_checkpoint(struct file *filep, · 1949 unmodified lines | |||
| 1950 | { | 1950 | { |
| 1951 | int ret; | 1951 | int ret; |
| 1952 | uint32_t num_devices, num_bos, num_objects; | 1952 | uint32_t num_devices, num_bos, num_objects; |
| 1953 | uint64_t priv_size, priv_offset = 0; | 1953 | uint64_t priv_size, priv_offset = 0, bo_priv_offset; |
| 1954 | 1954 | ||
| 1955 | if (!args->devices || !args->bos || !args->priv_data) | 1955 | if (!args->devices || !args->bos || !args->priv_data) |
| 1956 | return -EINVAL; | 1956 | return -EINVAL; |
| @@ -1994,38 +1994,34 @@ static int criu_checkpoint(struct file *filep, · 37 unmodified lines | |||
| 1994 | if (ret) | 1994 | if (ret) |
| 1995 | goto exit_unlock; | 1995 | goto exit_unlock; |
| 1996 | 1996 | ||
| 1997 | ret = criu_checkpoint_bos(p, num_bos, (uint8_t __user *)args->bos, | 1997 | /* Leave room for BOs in the private data. They need to be restored |
| 1998 | (uint8_t __user *)args->priv_data, &priv_offset); | 1998 | * before events, but we checkpoint them last to simplify the error |
| 1999 | if (ret) | 1999 | * handling. |
| 2000 | goto exit_unlock; | 2000 | */ |
| 2001 | bo_priv_offset = priv_offset; | ||
| 2002 | priv_offset += num_bos * sizeof(struct kfd_criu_bo_priv_data); | ||
| 2001 | 2003 | ||
| 2002 | if (num_objects) { | 2004 | if (num_objects) { |
| 2003 | ret = kfd_criu_checkpoint_queues(p, (uint8_t __user *)args->priv_data, | 2005 | ret = kfd_criu_checkpoint_queues(p, (uint8_t __user *)args->priv_data, |
| 2004 | &priv_offset); | 2006 | &priv_offset); |
| 2005 | if (ret) | 2007 | if (ret) |
| 2006 | goto close_bo_fds; | 2008 | goto exit_unlock; |
| 2007 | 2009 | ||
| 2008 | ret = kfd_criu_checkpoint_events(p, (uint8_t __user *)args->priv_data, | 2010 | ret = kfd_criu_checkpoint_events(p, (uint8_t __user *)args->priv_data, |
| 2009 | &priv_offset); | 2011 | &priv_offset); |
| 2010 | if (ret) | 2012 | if (ret) |
| 2011 | goto close_bo_fds; | 2013 | goto exit_unlock; |
| 2012 | 2014 | ||
| 2013 | ret = kfd_criu_checkpoint_svm(p, (uint8_t __user *)args->priv_data, &priv_offset); | 2015 | ret = kfd_criu_checkpoint_svm(p, (uint8_t __user *)args->priv_data, &priv_offset); |
| 2014 | if (ret) | 2016 | if (ret) |
| 2015 | goto close_bo_fds; | 2017 | goto exit_unlock; |
| 2016 | } | 2018 | } |
| 2017 | 2019 | ||
| 2018 | close_bo_fds: | 2020 | /* This must be the last thing in this function that can fail. |
| 2019 | if (ret) { | 2021 | * Otherwise we leak dmabuf file descriptors. |
| 2020 | /* If IOCTL returns err, user assumes all FDs opened in criu_dump_bos are closed */ | 2022 | */ |
| 2021 | uint32_t i; | 2023 | ret = criu_checkpoint_bos(p, num_bos, (uint8_t __user *)args->bos, |
| 2022 | struct kfd_criu_bo_bucket *bo_buckets = (struct kfd_criu_bo_bucket *) args->bos; | 2024 | (uint8_t __user *)args->priv_data, &bo_priv_offset); |
| 2023 | |||
| 2024 | for (i = 0; i < num_bos; i++) { | ||
| 2025 | if (bo_buckets[i].alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_VRAM) | ||
| 2026 | close_fd(bo_buckets[i].dmabuf_fd); | ||
| 2027 | } | ||
| 2028 | } | ||
| 2029 | 2025 | ||
| 2030 | exit_unlock: | 2026 | exit_unlock: |
| 2031 | mutex_unlock(&p->mutex); | 2027 | mutex_unlock(&p->mutex); |
| @@ -506,6 +506,7 @@ int kfd_criu_restore_event(struct file *devkfd, · 505 unmodified lines | |||
| 506 | ret = create_other_event(p, ev, &ev_priv->event_id); | 506 | ret = create_other_event(p, ev, &ev_priv->event_id); |
| 507 | break; | 507 | break; |
| 508 | } | 508 | } |
| 509 | mutex_unlock(&p->event_mutex); | ||
| 509 | 510 | ||
| 510 | exit: | 511 | exit: |
| 511 | if (ret) | 512 | if (ret) |
| @@ -513,8 +514,6 @@ exit: · 1 unmodified line | |||
| 513 | 514 | ||
| 514 | kfree(ev_priv); | 515 | kfree(ev_priv); |
| 515 | 516 | ||
| 516 | mutex_unlock(&p->event_mutex); | ||
| 517 | |||
| 518 | return ret; | 517 | return ret; |
| 519 | } | 518 | } |
| 520 | 519 | ||
| @@ -7622,9 +7622,10 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state, · 7621 unmodified lines | |||
| 7622 | bundle->surface_updates[planes_count].plane_info = | 7622 | bundle->surface_updates[planes_count].plane_info = |
| 7623 | &bundle->plane_infos[planes_count]; | 7623 | &bundle->plane_infos[planes_count]; |
| 7624 | 7624 | ||
| 7625 | fill_dc_dirty_rects(plane, old_plane_state, new_plane_state, | 7625 | if (acrtc_state->stream->link->psr_settings.psr_feature_enabled) |
| 7626 | new_crtc_state, | 7626 | fill_dc_dirty_rects(plane, old_plane_state, |
| 7627 | &bundle->flip_addrs[planes_count]); | 7627 | new_plane_state, new_crtc_state, |
| 7628 | &bundle->flip_addrs[planes_count]); | ||
| 7628 | 7629 | ||
| 7629 | /* | 7630 | /* |
| 7630 | * Only allow immediate flips for fast updates that don't | 7631 | * Only allow immediate flips for fast updates that don't |
| @@ -363,32 +363,32 @@ static struct wm_table ddr5_wm_table = { · 362 unmodified lines | |||
| 363 | .wm_inst = WM_A, | 363 | .wm_inst = WM_A, |
| 364 | .wm_type = WM_TYPE_PSTATE_CHG, | 364 | .wm_type = WM_TYPE_PSTATE_CHG, |
| 365 | .pstate_latency_us = 11.72, | 365 | .pstate_latency_us = 11.72, |
| 366 | .sr_exit_time_us = 9, | 366 | .sr_exit_time_us = 12.5, |
| 367 | .sr_enter_plus_exit_time_us = 11, | 367 | .sr_enter_plus_exit_time_us = 14.5, |
| 368 | .valid = true, | 368 | .valid = true, |
| 369 | }, | 369 | }, |
| 370 | { | 370 | { |
| 371 | .wm_inst = WM_B, | 371 | .wm_inst = WM_B, |
| 372 | .wm_type = WM_TYPE_PSTATE_CHG, | 372 | .wm_type = WM_TYPE_PSTATE_CHG, |
| 373 | .pstate_latency_us = 11.72, | 373 | .pstate_latency_us = 11.72, |
| 374 | .sr_exit_time_us = 9, | 374 | .sr_exit_time_us = 12.5, |
| 375 | .sr_enter_plus_exit_time_us = 11, | 375 | .sr_enter_plus_exit_time_us = 14.5, |
| 376 | .valid = true, | 376 | .valid = true, |
| 377 | }, | 377 | }, |
| 378 | { | 378 | { |
| 379 | .wm_inst = WM_C, | 379 | .wm_inst = WM_C, |
| 380 | .wm_type = WM_TYPE_PSTATE_CHG, | 380 | .wm_type = WM_TYPE_PSTATE_CHG, |
| 381 | .pstate_latency_us = 11.72, | 381 | .pstate_latency_us = 11.72, |
| 382 | .sr_exit_time_us = 9, | 382 | .sr_exit_time_us = 12.5, |
| 383 | .sr_enter_plus_exit_time_us = 11, | 383 | .sr_enter_plus_exit_time_us = 14.5, |
| 384 | .valid = true, | 384 | .valid = true, |
| 385 | }, | 385 | }, |
| 386 | { | 386 | { |
| 387 | .wm_inst = WM_D, | 387 | .wm_inst = WM_D, |
| 388 | .wm_type = WM_TYPE_PSTATE_CHG, | 388 | .wm_type = WM_TYPE_PSTATE_CHG, |
| 389 | .pstate_latency_us = 11.72, | 389 | .pstate_latency_us = 11.72, |
| 390 | .sr_exit_time_us = 9, | 390 | .sr_exit_time_us = 12.5, |
| 391 | .sr_enter_plus_exit_time_us = 11, | 391 | .sr_enter_plus_exit_time_us = 14.5, |
| 392 | .valid = true, | 392 | .valid = true, |
| 393 | }, | 393 | }, |
| 394 | } | 394 | } |
| @@ -400,32 +400,32 @@ static struct wm_table lpddr5_wm_table = { · 5 unmodified lines | |||
| 400 | .wm_inst = WM_A, | 400 | .wm_inst = WM_A, |
| 401 | .wm_type = WM_TYPE_PSTATE_CHG, | 401 | .wm_type = WM_TYPE_PSTATE_CHG, |
| 402 | .pstate_latency_us = 11.65333, | 402 | .pstate_latency_us = 11.65333, |
| 403 | .sr_exit_time_us = 11.5, | 403 | .sr_exit_time_us = 16.5, |
| 404 | .sr_enter_plus_exit_time_us = 14.5, | 404 | .sr_enter_plus_exit_time_us = 18.5, |
| 405 | .valid = true, | 405 | .valid = true, |
| 406 | }, | 406 | }, |
| 407 | { | 407 | { |
| 408 | .wm_inst = WM_B, | 408 | .wm_inst = WM_B, |
| 409 | .wm_type = WM_TYPE_PSTATE_CHG, | 409 | .wm_type = WM_TYPE_PSTATE_CHG, |
| 410 | .pstate_latency_us = 11.65333, | 410 | .pstate_latency_us = 11.65333, |
| 411 | .sr_exit_time_us = 11.5, | 411 | .sr_exit_time_us = 16.5, |
| 412 | .sr_enter_plus_exit_time_us = 14.5, | 412 | .sr_enter_plus_exit_time_us = 18.5, |
| 413 | .valid = true, | 413 | .valid = true, |
| 414 | }, | 414 | }, |
| 415 | { | 415 | { |
| 416 | .wm_inst = WM_C, | 416 | .wm_inst = WM_C, |
| 417 | .wm_type = WM_TYPE_PSTATE_CHG, | 417 | .wm_type = WM_TYPE_PSTATE_CHG, |
| 418 | .pstate_latency_us = 11.65333, | 418 | .pstate_latency_us = 11.65333, |
| 419 | .sr_exit_time_us = 11.5, | 419 | .sr_exit_time_us = 16.5, |
| 420 | .sr_enter_plus_exit_time_us = 14.5, | 420 | .sr_enter_plus_exit_time_us = 18.5, |
| 421 | .valid = true, | 421 | .valid = true, |
| 422 | }, | 422 | }, |
| 423 | { | 423 | { |
| 424 | .wm_inst = WM_D, | 424 | .wm_inst = WM_D, |
| 425 | .wm_type = WM_TYPE_PSTATE_CHG, | 425 | .wm_type = WM_TYPE_PSTATE_CHG, |
| 426 | .pstate_latency_us = 11.65333, | 426 | .pstate_latency_us = 11.65333, |
| 427 | .sr_exit_time_us = 11.5, | 427 | .sr_exit_time_us = 16.5, |
| 428 | .sr_enter_plus_exit_time_us = 14.5, | 428 | .sr_enter_plus_exit_time_us = 18.5, |
| 429 | .valid = true, | 429 | .valid = true, |
| 430 | }, | 430 | }, |
| 431 | } | 431 | } |
| @@ -853,6 +853,7 @@ struct dc_debug_options { · 852 unmodified lines | |||
| 853 | bool enable_dp_dig_pixel_rate_div_policy; | 853 | bool enable_dp_dig_pixel_rate_div_policy; |
| 854 | enum lttpr_mode lttpr_mode_override; | 854 | enum lttpr_mode lttpr_mode_override; |
| 855 | unsigned int dsc_delay_factor_wa_x1000; | 855 | unsigned int dsc_delay_factor_wa_x1000; |
| 856 | unsigned int min_prefetch_in_strobe_ns; | ||
| 856 | }; | 857 | }; |
| 857 | 858 | ||
| 858 | struct gpu_info_soc_bounding_box_v1_0; | 859 | struct gpu_info_soc_bounding_box_v1_0; |
| @@ -49,18 +49,30 @@ · 48 unmodified lines | |||
| 49 | #define CTX \ | 49 | #define CTX \ |
| 50 | enc1->base.ctx | 50 | enc1->base.ctx |
| 51 | 51 | ||
| 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 | } | ||
| 52 | 66 | ||
| 53 | static void enc314_enable_fifo(struct stream_encoder *enc) | 67 | static void enc314_enable_fifo(struct stream_encoder *enc) |
| 54 | { | 68 | { |
| 55 | struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc); | 69 | struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc); |
| 56 | 70 | ||
| 57 | /* TODO: Confirm if we need to wait for DIG_SYMCLK_FE_ON */ | ||
| 58 | REG_WAIT(DIG_FE_CNTL, DIG_SYMCLK_FE_ON, 1, 10, 5000); | ||
| 59 | REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_READ_START_LEVEL, 0x7); | 71 | REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_READ_START_LEVEL, 0x7); |
| 60 | REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_RESET, 1); | 72 | |
| 61 | REG_WAIT(DIG_FIFO_CTRL0, DIG_FIFO_RESET_DONE, 1, 10, 5000); | 73 | enc314_reset_fifo(enc, true); |
| 62 | REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_RESET, 0); | 74 | enc314_reset_fifo(enc, false); |
| 63 | REG_WAIT(DIG_FIFO_CTRL0, DIG_FIFO_RESET_DONE, 0, 10, 5000); | 75 | |
| 64 | REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_ENABLE, 1); | 76 | REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_ENABLE, 1); |
| 65 | } | 77 | } |
| 66 | 78 | ||
| @@ -724,6 +724,7 @@ static const struct dc_debug_options debug_defaults_drv = { · 723 unmodified lines | |||
| 724 | .enable_dp_dig_pixel_rate_div_policy = 1, | 724 | .enable_dp_dig_pixel_rate_div_policy = 1, |
| 725 | .allow_sw_cursor_fallback = false, | 725 | .allow_sw_cursor_fallback = false, |
| 726 | .alloc_extra_way_for_cursor = true, | 726 | .alloc_extra_way_for_cursor = true, |
| 727 | .min_prefetch_in_strobe_ns = 60000, // 60us | ||
| 727 | }; | 728 | }; |
| 728 | 729 | ||
| 729 | static const struct dc_debug_options debug_defaults_diags = { | 730 | static const struct dc_debug_options debug_defaults_diags = { |
| @@ -722,6 +722,7 @@ static const struct dc_debug_options debug_defaults_drv = { · 721 unmodified lines | |||
| 722 | .enable_dp_dig_pixel_rate_div_policy = 1, | 722 | .enable_dp_dig_pixel_rate_div_policy = 1, |
| 723 | .allow_sw_cursor_fallback = false, | 723 | .allow_sw_cursor_fallback = false, |
| 724 | .alloc_extra_way_for_cursor = true, | 724 | .alloc_extra_way_for_cursor = true, |
| 725 | .min_prefetch_in_strobe_ns = 60000, // 60us | ||
| 725 | }; | 726 | }; |
| 726 | 727 | ||
| 727 | static const struct dc_debug_options debug_defaults_diags = { | 728 | static const struct dc_debug_options debug_defaults_diags = { |
| @@ -146,8 +146,8 @@ struct _vcs_dpi_soc_bounding_box_st dcn3_14_soc = { · 145 unmodified lines | |||
| 146 | }, | 146 | }, |
| 147 | }, | 147 | }, |
| 148 | .num_states = 5, | 148 | .num_states = 5, |
| 149 | .sr_exit_time_us = 9.0, | 149 | .sr_exit_time_us = 16.5, |
| 150 | .sr_enter_plus_exit_time_us = 11.0, | 150 | .sr_enter_plus_exit_time_us = 18.5, |
| 151 | .sr_exit_z8_time_us = 442.0, | 151 | .sr_exit_z8_time_us = 442.0, |
| 152 | .sr_enter_plus_exit_z8_time_us = 560.0, | 152 | .sr_enter_plus_exit_z8_time_us = 560.0, |
| 153 | .writeback_latency_us = 12.0, | 153 | .writeback_latency_us = 12.0, |
| @@ -2364,6 +2364,8 @@ void dcn32_update_bw_bounding_box_fpu(struct dc *dc, struct clk_bw_params *bw_pa · 2363 unmodified lines | |||
| 2364 | /* DML DSC delay factor workaround */ | 2364 | /* DML DSC delay factor workaround */ |
| 2365 | dcn3_2_ip.dsc_delay_factor_wa = dc->debug.dsc_delay_factor_wa_x1000 / 1000.0; | 2365 | dcn3_2_ip.dsc_delay_factor_wa = dc->debug.dsc_delay_factor_wa_x1000 / 1000.0; |
| 2366 | 2366 | ||
| 2367 | dcn3_2_ip.min_prefetch_in_strobe_us = dc->debug.min_prefetch_in_strobe_ns / 1000.0; | ||
| 2368 | |||
| 2367 | /* Override dispclk_dppclk_vco_speed_mhz from Clk Mgr */ | 2369 | /* Override dispclk_dppclk_vco_speed_mhz from Clk Mgr */ |
| 2368 | dcn3_2_soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0; | 2370 | dcn3_2_soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0; |
| 2369 | dc->dml.soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0; | 2371 | dc->dml.soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0; |
| @@ -786,6 +786,8 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman · 785 unmodified lines | |||
| 786 | v->SwathHeightY[k], | 786 | v->SwathHeightY[k], |
| 787 | v->SwathHeightC[k], | 787 | v->SwathHeightC[k], |
| 788 | TWait, | 788 | TWait, |
| 789 | v->DRAMSpeedPerState[mode_lib->vba.VoltageLevel] <= MEM_STROBE_FREQ_MHZ ? | ||
| 790 | mode_lib->vba.ip.min_prefetch_in_strobe_us : 0, | ||
| 789 | /* Output */ | 791 | /* Output */ |
| 790 | &v->DSTXAfterScaler[k], | 792 | &v->DSTXAfterScaler[k], |
| 791 | &v->DSTYAfterScaler[k], | 793 | &v->DSTYAfterScaler[k], |
| @@ -3192,6 +3194,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l · 2400 unmodified lines | |||
| 3192 | mode_lib->vba.FCLKChangeLatency, mode_lib->vba.UrgLatency[i], | 3194 | mode_lib->vba.FCLKChangeLatency, mode_lib->vba.UrgLatency[i], |
| 3193 | mode_lib->vba.SREnterPlusExitTime); | 3195 | mode_lib->vba.SREnterPlusExitTime); |
| 3194 | 3196 | ||
| 3197 | memset(&v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull, 0, sizeof(DmlPipe)); | ||
| 3195 | v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dppclk = mode_lib->vba.RequiredDPPCLK[i][j][k]; | 3198 | v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dppclk = mode_lib->vba.RequiredDPPCLK[i][j][k]; |
| 3196 | v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dispclk = mode_lib->vba.RequiredDISPCLK[i][j]; | 3199 | v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dispclk = mode_lib->vba.RequiredDISPCLK[i][j]; |
| 3197 | v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.PixelClock = mode_lib->vba.PixelClock[k]; | 3200 | v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.PixelClock = mode_lib->vba.PixelClock[k]; |
| @@ -3244,6 +3247,8 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l · 46 unmodified lines | |||
| 3244 | v->swath_width_chroma_ub_this_state[k], | 3247 | v->swath_width_chroma_ub_this_state[k], |
| 3245 | v->SwathHeightYThisState[k], | 3248 | v->SwathHeightYThisState[k], |
| 3246 | v->SwathHeightCThisState[k], v->TWait, | 3249 | v->SwathHeightCThisState[k], v->TWait, |
| 3250 | v->DRAMSpeedPerState[i] <= MEM_STROBE_FREQ_MHZ ? | ||
| 3251 | mode_lib->vba.ip.min_prefetch_in_strobe_us : 0, | ||
| 3247 | 3252 | ||
| 3248 | /* Output */ | 3253 | /* Output */ |
| 3249 | &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.DSTXAfterScaler[k], | 3254 | &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.DSTXAfterScaler[k], |
| @@ -49,6 +49,9 @@ · 48 unmodified lines | |||
| 49 | #define BPP_INVALID 0 | 49 | #define BPP_INVALID 0 |
| 50 | #define BPP_BLENDED_PIPE 0xffffffff | 50 | #define BPP_BLENDED_PIPE 0xffffffff |
| 51 | 51 | ||
| 52 | #define MEM_STROBE_FREQ_MHZ 1600 | ||
| 53 | #define MEM_STROBE_MAX_DELIVERY_TIME_US 60.0 | ||
| 54 | |||
| 52 | struct display_mode_lib; | 55 | struct display_mode_lib; |
| 53 | 56 | ||
| 54 | void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib); | 57 | void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib); |
| @@ -3417,6 +3417,7 @@ bool dml32_CalculatePrefetchSchedule( · 3416 unmodified lines | |||
| 3417 | unsigned int SwathHeightY, | 3417 | unsigned int SwathHeightY, |
| 3418 | unsigned int SwathHeightC, | 3418 | unsigned int SwathHeightC, |
| 3419 | double TWait, | 3419 | double TWait, |
| 3420 | double TPreReq, | ||
| 3420 | /* Output */ | 3421 | /* Output */ |
| 3421 | double *DSTXAfterScaler, | 3422 | double *DSTXAfterScaler, |
| 3422 | double *DSTYAfterScaler, | 3423 | double *DSTYAfterScaler, |
| @@ -3474,6 +3475,7 @@ bool dml32_CalculatePrefetchSchedule( · 51 unmodified lines | |||
| 3474 | double min_Lsw; | 3475 | double min_Lsw; |
| 3475 | double Tsw_est1 = 0; | 3476 | double Tsw_est1 = 0; |
| 3476 | double Tsw_est3 = 0; | 3477 | double Tsw_est3 = 0; |
| 3478 | double TPreMargin = 0; | ||
| 3477 | 3479 | ||
| 3478 | if (v->GPUVMEnable == true && v->HostVMEnable == true) | 3480 | if (v->GPUVMEnable == true && v->HostVMEnable == true) |
| 3479 | HostVMDynamicLevelsTrips = v->HostVMMaxNonCachedPageTableLevels; | 3481 | HostVMDynamicLevelsTrips = v->HostVMMaxNonCachedPageTableLevels; |
| @@ -3699,6 +3701,8 @@ bool dml32_CalculatePrefetchSchedule( · 219 unmodified lines | |||
| 3699 | 3701 | ||
| 3700 | dst_y_prefetch_equ = dml_floor(4.0 * (dst_y_prefetch_equ + 0.125), 1) / 4.0; | 3702 | dst_y_prefetch_equ = dml_floor(4.0 * (dst_y_prefetch_equ + 0.125), 1) / 4.0; |
| 3701 | Tpre_rounded = dst_y_prefetch_equ * LineTime; | 3703 | Tpre_rounded = dst_y_prefetch_equ * LineTime; |
| 3704 | |||
| 3705 | TPreMargin = Tpre_rounded - TPreReq; | ||
| 3702 | #ifdef __DML_VBA_DEBUG__ | 3706 | #ifdef __DML_VBA_DEBUG__ |
| 3703 | dml_print("DML::%s: dst_y_prefetch_equ: %f (after round)\n", __func__, dst_y_prefetch_equ); | 3707 | dml_print("DML::%s: dst_y_prefetch_equ: %f (after round)\n", __func__, dst_y_prefetch_equ); |
| 3704 | dml_print("DML::%s: LineTime: %f\n", __func__, LineTime); | 3708 | dml_print("DML::%s: LineTime: %f\n", __func__, LineTime); |
| @@ -3726,7 +3730,7 @@ bool dml32_CalculatePrefetchSchedule( · 21 unmodified lines | |||
| 3726 | *VRatioPrefetchY = 0; | 3730 | *VRatioPrefetchY = 0; |
| 3727 | *VRatioPrefetchC = 0; | 3731 | *VRatioPrefetchC = 0; |
| 3728 | *RequiredPrefetchPixDataBWLuma = 0; | 3732 | *RequiredPrefetchPixDataBWLuma = 0; |
| 3729 | if (dst_y_prefetch_equ > 1) { | 3733 | if (dst_y_prefetch_equ > 1 && TPreMargin > 0.0) { |
| 3730 | double PrefetchBandwidth1; | 3734 | double PrefetchBandwidth1; |
| 3731 | double PrefetchBandwidth2; | 3735 | double PrefetchBandwidth2; |
| 3732 | double PrefetchBandwidth3; | 3736 | double PrefetchBandwidth3; |
| @@ -3872,7 +3876,11 @@ bool dml32_CalculatePrefetchSchedule( · 139 unmodified lines | |||
| 3872 | } | 3876 | } |
| 3873 | 3877 | ||
| 3874 | if (dst_y_prefetch_oto < dst_y_prefetch_equ) { | 3878 | if (dst_y_prefetch_oto < dst_y_prefetch_equ) { |
| 3875 | *DestinationLinesForPrefetch = dst_y_prefetch_oto; | 3879 | if (dst_y_prefetch_oto * LineTime < TPreReq) { |
| 3880 | *DestinationLinesForPrefetch = dst_y_prefetch_equ; | ||
| 3881 | } else { | ||
| 3882 | *DestinationLinesForPrefetch = dst_y_prefetch_oto; | ||
| 3883 | } | ||
| 3876 | TimeForFetchingMetaPTE = Tvm_oto; | 3884 | TimeForFetchingMetaPTE = Tvm_oto; |
| 3877 | TimeForFetchingRowInVBlank = Tr0_oto; | 3885 | TimeForFetchingRowInVBlank = Tr0_oto; |
| 3878 | *PrefetchBandwidth = prefetch_bw_oto; | 3886 | *PrefetchBandwidth = prefetch_bw_oto; |
| @@ -4397,7 +4405,7 @@ void dml32_CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport( · 518 unmodified lines | |||
| 4397 | 4405 | ||
| 4398 | if (v->NumberOfActiveSurfaces > 1) { | 4406 | if (v->NumberOfActiveSurfaces > 1) { |
| 4399 | ActiveClockChangeLatencyHidingY = ActiveClockChangeLatencyHidingY | 4407 | ActiveClockChangeLatencyHidingY = ActiveClockChangeLatencyHidingY |
| 4400 | - (1 - 1 / v->NumberOfActiveSurfaces) * SwathHeightY[k] * v->HTotal[k] | 4408 | - (1.0 - 1.0 / v->NumberOfActiveSurfaces) * SwathHeightY[k] * v->HTotal[k] |
| 4401 | / v->PixelClock[k] / v->VRatio[k]; | 4409 | / v->PixelClock[k] / v->VRatio[k]; |
| 4402 | } | 4410 | } |
| 4403 | 4411 | ||
| @@ -30,7 +30,7 @@ · 29 unmodified lines | |||
| 30 | #include "os_types.h" | 30 | #include "os_types.h" |
| 31 | #include "../dc_features.h" | 31 | #include "../dc_features.h" |
| 32 | #include "../display_mode_structs.h" | 32 | #include "../display_mode_structs.h" |
| 33 | #include "dml/display_mode_vba.h" | 33 | #include "../display_mode_vba.h" |
| 34 | 34 | ||
| 35 | unsigned int dml32_dscceComputeDelay( | 35 | unsigned int dml32_dscceComputeDelay( |
| 36 | unsigned int bpc, | 36 | unsigned int bpc, |
| @@ -743,6 +743,7 @@ bool dml32_CalculatePrefetchSchedule( · 706 unmodified lines | |||
| 743 | unsigned int SwathHeightY, | 743 | unsigned int SwathHeightY, |
| 744 | unsigned int SwathHeightC, | 744 | unsigned int SwathHeightC, |
| 745 | double TWait, | 745 | double TWait, |
| 746 | double TPreReq, | ||
| 746 | /* Output */ | 747 | /* Output */ |
| 747 | double *DSTXAfterScaler, | 748 | double *DSTXAfterScaler, |
| 748 | double *DSTYAfterScaler, | 749 | double *DSTYAfterScaler, |
| @@ -544,6 +544,8 @@ void dcn321_update_bw_bounding_box_fpu(struct dc *dc, struct clk_bw_params *bw_p · 543 unmodified lines | |||
| 544 | /* DML DSC delay factor workaround */ | 544 | /* DML DSC delay factor workaround */ |
| 545 | dcn3_21_ip.dsc_delay_factor_wa = dc->debug.dsc_delay_factor_wa_x1000 / 1000.0; | 545 | dcn3_21_ip.dsc_delay_factor_wa = dc->debug.dsc_delay_factor_wa_x1000 / 1000.0; |
| 546 | 546 | ||
| 547 | dcn3_21_ip.min_prefetch_in_strobe_us = dc->debug.min_prefetch_in_strobe_ns / 1000.0; | ||
| 548 | |||
| 547 | /* Override dispclk_dppclk_vco_speed_mhz from Clk Mgr */ | 549 | /* Override dispclk_dppclk_vco_speed_mhz from Clk Mgr */ |
| 548 | dcn3_21_soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0; | 550 | dcn3_21_soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0; |
| 549 | dc->dml.soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0; | 551 | dc->dml.soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0; |
| @@ -367,6 +367,7 @@ struct _vcs_dpi_ip_params_st { · 366 unmodified lines | |||
| 367 | 367 | ||
| 368 | /* DM workarounds */ | 368 | /* DM workarounds */ |
| 369 | double dsc_delay_factor_wa; // TODO: Remove after implementing root cause fix | 369 | double dsc_delay_factor_wa; // TODO: Remove after implementing root cause fix |
| 370 | double min_prefetch_in_strobe_us; | ||
| 370 | }; | 371 | }; |
| 371 | 372 | ||
| 372 | struct _vcs_dpi_display_xfc_params_st { | 373 | struct _vcs_dpi_display_xfc_params_st { |
| @@ -107,6 +107,13 @@ static const struct ddc_registers ddc_data_regs_dcn[] = { · 106 unmodified lines | |||
| 107 | ddc_data_regs_dcn2(3), | 107 | ddc_data_regs_dcn2(3), |
| 108 | ddc_data_regs_dcn2(4), | 108 | ddc_data_regs_dcn2(4), |
| 109 | ddc_data_regs_dcn2(5), | 109 | ddc_data_regs_dcn2(5), |
| 110 | { | ||
| 111 | // add a dummy entry for cases no such port | ||
| 112 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, | ||
| 113 | .ddc_setup = 0, | ||
| 114 | .phy_aux_cntl = 0, | ||
| 115 | .dc_gpio_aux_ctrl_5 = 0 | ||
| 116 | }, | ||
| 110 | { | 117 | { |
| 111 | DDC_GPIO_VGA_REG_LIST(DATA), | 118 | DDC_GPIO_VGA_REG_LIST(DATA), |
| 112 | .ddc_setup = 0, | 119 | .ddc_setup = 0, |
| @@ -121,6 +128,13 @@ static const struct ddc_registers ddc_clk_regs_dcn[] = { · 8 unmodified lines | |||
| 121 | ddc_clk_regs_dcn2(3), | 128 | ddc_clk_regs_dcn2(3), |
| 122 | ddc_clk_regs_dcn2(4), | 129 | ddc_clk_regs_dcn2(4), |
| 123 | ddc_clk_regs_dcn2(5), | 130 | ddc_clk_regs_dcn2(5), |
| 131 | { | ||
| 132 | // add a dummy entry for cases no such port | ||
| 133 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, | ||
| 134 | .ddc_setup = 0, | ||
| 135 | .phy_aux_cntl = 0, | ||
| 136 | .dc_gpio_aux_ctrl_5 = 0 | ||
| 137 | }, | ||
| 124 | { | 138 | { |
| 125 | DDC_GPIO_VGA_REG_LIST(CLK), | 139 | DDC_GPIO_VGA_REG_LIST(CLK), |
| 126 | .ddc_setup = 0, | 140 | .ddc_setup = 0, |
| @@ -94,11 +94,14 @@ static enum gpio_result set_config( · 93 unmodified lines | |||
| 94 | * is required for detection of AUX mode */ | 94 | * is required for detection of AUX mode */ |
| 95 | if (hw_gpio->base.en != GPIO_DDC_LINE_VIP_PAD) { | 95 | if (hw_gpio->base.en != GPIO_DDC_LINE_VIP_PAD) { |
| 96 | if (!ddc_data_pd_en || !ddc_clk_pd_en) { | 96 | if (!ddc_data_pd_en || !ddc_clk_pd_en) { |
| 97 | 97 | if (hw_gpio->base.en == GPIO_DDC_LINE_DDC_VGA) { | |
| 98 | REG_SET_2(gpio.MASK_reg, regval, | 98 | // bit 4 of mask has different usage in some cases |
| 99 | REG_SET(gpio.MASK_reg, regval, DC_GPIO_DDC1DATA_PD_EN, 1); | ||
| 100 | } else { | ||
| 101 | REG_SET_2(gpio.MASK_reg, regval, | ||
| 99 | DC_GPIO_DDC1DATA_PD_EN, 1, | 102 | DC_GPIO_DDC1DATA_PD_EN, 1, |
| 100 | DC_GPIO_DDC1CLK_PD_EN, 1); | 103 | DC_GPIO_DDC1CLK_PD_EN, 1); |
| 101 | 104 | } | |
| 102 | if (config_data->type == | 105 | if (config_data->type == |
| 103 | GPIO_CONFIG_TYPE_I2C_AUX_DUAL_MODE) | 106 | GPIO_CONFIG_TYPE_I2C_AUX_DUAL_MODE) |
| 104 | msleep(3); | 107 | msleep(3); |
| @@ -67,22 +67,21 @@ int vega10_fan_ctrl_get_fan_speed_info(struct pp_hwmgr *hwmgr, · 66 unmodified lines | |||
| 67 | int vega10_fan_ctrl_get_fan_speed_pwm(struct pp_hwmgr *hwmgr, | 67 | int vega10_fan_ctrl_get_fan_speed_pwm(struct pp_hwmgr *hwmgr, |
| 68 | uint32_t *speed) | 68 | uint32_t *speed) |
| 69 | { | 69 | { |
| 70 | uint32_t current_rpm; | 70 | struct amdgpu_device *adev = hwmgr->adev; |
| 71 | uint32_t percent = 0; | 71 | uint32_t duty100, duty; |
| 72 | 72 | uint64_t tmp64; | |
| 73 | if (hwmgr->thermal_controller.fanInfo.bNoFan) | ||
| 74 | return 0; | ||
| 75 | 73 | ||
| 76 | if (vega10_get_current_rpm(hwmgr, ¤t_rpm)) | 74 | duty100 = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_FDO_CTRL1), |
| 77 | return -1; | 75 | CG_FDO_CTRL1, FMAX_DUTY100); |
| 76 | duty = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_THERMAL_STATUS), | ||
| 77 | CG_THERMAL_STATUS, FDO_PWM_DUTY); | ||
| 78 | 78 | ||
| 79 | if (hwmgr->thermal_controller. | 79 | if (!duty100) |
| 80 | advanceFanControlParameters.usMaxFanRPM != 0) | 80 | return -EINVAL; |
| 81 | percent = current_rpm * 255 / | ||
| 82 | hwmgr->thermal_controller. | ||
| 83 | advanceFanControlParameters.usMaxFanRPM; | ||
| 84 | 81 | ||
| 85 | *speed = MIN(percent, 255); | 82 | tmp64 = (uint64_t)duty * 255; |
| 83 | do_div(tmp64, duty100); | ||
| 84 | *speed = MIN((uint32_t)tmp64, 255); | ||
| 86 | 85 | ||
| 87 | return 0; | 86 | return 0; |
| 88 | } | 87 | } |
| @@ -54,14 +54,14 @@ · 53 unmodified lines | |||
| 54 | #define PPSMC_MSG_TestMessage 0x01 ///< To check if PMFW is alive and responding. Requirement specified by PMFW team | 54 | #define PPSMC_MSG_TestMessage 0x01 ///< To check if PMFW is alive and responding. Requirement specified by PMFW team |
| 55 | #define PPSMC_MSG_GetPmfwVersion 0x02 ///< Get PMFW version | 55 | #define PPSMC_MSG_GetPmfwVersion 0x02 ///< Get PMFW version |
| 56 | #define PPSMC_MSG_GetDriverIfVersion 0x03 ///< Get PMFW_DRIVER_IF version | 56 | #define PPSMC_MSG_GetDriverIfVersion 0x03 ///< Get PMFW_DRIVER_IF version |
| 57 | #define PPSMC_MSG_EnableGfxOff 0x04 ///< Enable GFXOFF | 57 | #define PPSMC_MSG_SPARE0 0x04 ///< SPARE |
| 58 | #define PPSMC_MSG_DisableGfxOff 0x05 ///< Disable GFXOFF | 58 | #define PPSMC_MSG_SPARE1 0x05 ///< SPARE |
| 59 | #define PPSMC_MSG_PowerDownVcn 0x06 ///< Power down VCN | 59 | #define PPSMC_MSG_PowerDownVcn 0x06 ///< Power down VCN |
| 60 | #define PPSMC_MSG_PowerUpVcn 0x07 ///< Power up VCN; VCN is power gated by default | 60 | #define PPSMC_MSG_PowerUpVcn 0x07 ///< Power up VCN; VCN is power gated by default |
| 61 | #define PPSMC_MSG_SetHardMinVcn 0x08 ///< For wireless display | 61 | #define PPSMC_MSG_SetHardMinVcn 0x08 ///< For wireless display |
| 62 | #define PPSMC_MSG_SetSoftMinGfxclk 0x09 ///< Set SoftMin for GFXCLK, argument is frequency in MHz | 62 | #define PPSMC_MSG_SetSoftMinGfxclk 0x09 ///< Set SoftMin for GFXCLK, argument is frequency in MHz |
| 63 | #define PPSMC_MSG_ActiveProcessNotify 0x0A ///< Needs update | 63 | #define PPSMC_MSG_SPARE2 0x0A ///< SPARE |
| 64 | #define PPSMC_MSG_ForcePowerDownGfx 0x0B ///< Force power down GFX, i.e. enter GFXOFF | 64 | #define PPSMC_MSG_SPARE3 0x0B ///< SPARE |
| 65 | #define PPSMC_MSG_PrepareMp1ForUnload 0x0C ///< Prepare PMFW for GFX driver unload | 65 | #define PPSMC_MSG_PrepareMp1ForUnload 0x0C ///< Prepare PMFW for GFX driver unload |
| 66 | #define PPSMC_MSG_SetDriverDramAddrHigh 0x0D ///< Set high 32 bits of DRAM address for Driver table transfer | 66 | #define PPSMC_MSG_SetDriverDramAddrHigh 0x0D ///< Set high 32 bits of DRAM address for Driver table transfer |
| 67 | #define PPSMC_MSG_SetDriverDramAddrLow 0x0E ///< Set low 32 bits of DRAM address for Driver table transfer | 67 | #define PPSMC_MSG_SetDriverDramAddrLow 0x0E ///< Set low 32 bits of DRAM address for Driver table transfer |
| @@ -73,8 +73,7 @@ · 5 unmodified lines | |||
| 73 | #define PPSMC_MSG_SetSoftMinFclk 0x14 ///< Set hard min for FCLK | 73 | #define PPSMC_MSG_SetSoftMinFclk 0x14 ///< Set hard min for FCLK |
| 74 | #define PPSMC_MSG_SetSoftMinVcn 0x15 ///< Set soft min for VCN clocks (VCLK and DCLK) | 74 | #define PPSMC_MSG_SetSoftMinVcn 0x15 ///< Set soft min for VCN clocks (VCLK and DCLK) |
| 75 | 75 | ||
| 76 | 76 | #define PPSMC_MSG_EnableGfxImu 0x16 ///< Enable GFX IMU | |
| 77 | #define PPSMC_MSG_EnableGfxImu 0x16 ///< Needs update | ||
| 78 | 77 | ||
| 79 | #define PPSMC_MSG_GetGfxclkFrequency 0x17 ///< Get GFX clock frequency | 78 | #define PPSMC_MSG_GetGfxclkFrequency 0x17 ///< Get GFX clock frequency |
| 80 | #define PPSMC_MSG_GetFclkFrequency 0x18 ///< Get FCLK frequency | 79 | #define PPSMC_MSG_GetFclkFrequency 0x18 ///< Get FCLK frequency |
| @@ -102,8 +101,8 @@ · 21 unmodified lines | |||
| 102 | #define PPSMC_MSG_SetHardMinIspxclkByFreq 0x2C ///< Set HardMin by frequency for ISPXCLK | 101 | #define PPSMC_MSG_SetHardMinIspxclkByFreq 0x2C ///< Set HardMin by frequency for ISPXCLK |
| 103 | #define PPSMC_MSG_PowerDownUmsch 0x2D ///< Power down VCN.UMSCH (aka VSCH) scheduler | 102 | #define PPSMC_MSG_PowerDownUmsch 0x2D ///< Power down VCN.UMSCH (aka VSCH) scheduler |
| 104 | #define PPSMC_MSG_PowerUpUmsch 0x2E ///< Power up VCN.UMSCH (aka VSCH) scheduler | 103 | #define PPSMC_MSG_PowerUpUmsch 0x2E ///< Power up VCN.UMSCH (aka VSCH) scheduler |
| 105 | #define PPSMC_Message_IspStutterOn_MmhubPgDis 0x2F ///< ISP StutterOn mmHub PgDis | 104 | #define PPSMC_MSG_IspStutterOn_MmhubPgDis 0x2F ///< ISP StutterOn mmHub PgDis |
| 106 | #define PPSMC_Message_IspStutterOff_MmhubPgEn 0x30 ///< ISP StufferOff mmHub PgEn | 105 | #define PPSMC_MSG_IspStutterOff_MmhubPgEn 0x30 ///< ISP StufferOff mmHub PgEn |
| 107 | 106 | ||
| 108 | #define PPSMC_Message_Count 0x31 ///< Total number of PPSMC messages | 107 | #define PPSMC_Message_Count 0x31 ///< Total number of PPSMC messages |
| 109 | /** @}*/ | 108 | /** @}*/ |
| @@ -377,7 +377,9 @@ static void sienna_cichlid_check_bxco_support(struct smu_context *smu) · 376 unmodified lines | |||
| 377 | if (((adev->pdev->device == 0x73A1) && | 377 | if (((adev->pdev->device == 0x73A1) && |
| 378 | (adev->pdev->revision == 0x00)) || | 378 | (adev->pdev->revision == 0x00)) || |
| 379 | ((adev->pdev->device == 0x73BF) && | 379 | ((adev->pdev->device == 0x73BF) && |
| 380 | (adev->pdev->revision == 0xCF))) | 380 | (adev->pdev->revision == 0xCF)) || |
| 381 | ((adev->pdev->device == 0x7422) && | ||
| 382 | (adev->pdev->revision == 0x00))) | ||
| 381 | smu_baco->platform_support = false; | 383 | smu_baco->platform_support = false; |
| 382 | 384 | ||
| 383 | } | 385 | } |
| @@ -134,6 +134,12 @@ static const struct dmi_system_id orientation_data[] = { · 133 unmodified lines | |||
| 134 | DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "One S1003"), | 134 | DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "One S1003"), |
| 135 | }, | 135 | }, |
| 136 | .driver_data = (void *)&lcd800x1280_rightside_up, | 136 | .driver_data = (void *)&lcd800x1280_rightside_up, |
| 137 | }, { /* Acer Switch V 10 (SW5-017) */ | ||
| 138 | .matches = { | ||
| 139 | DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
| 140 | DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "SW5-017"), | ||
| 141 | }, | ||
| 142 | .driver_data = (void *)&lcd800x1280_rightside_up, | ||
| 137 | }, { /* Anbernic Win600 */ | 143 | }, { /* Anbernic Win600 */ |
| 138 | .matches = { | 144 | .matches = { |
| 139 | DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Anbernic"), | 145 | DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Anbernic"), |
| @@ -319,6 +325,12 @@ static const struct dmi_system_id orientation_data[] = { · 179 unmodified lines | |||
| 319 | DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"), | 325 | DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"), |
| 320 | }, | 326 | }, |
| 321 | .driver_data = (void *)&lcd1200x1920_rightside_up, | 327 | .driver_data = (void *)&lcd1200x1920_rightside_up, |
| 328 | }, { /* Nanote UMPC-01 */ | ||
| 329 | .matches = { | ||
| 330 | DMI_MATCH(DMI_SYS_VENDOR, "RWC CO.,LTD"), | ||
| 331 | DMI_MATCH(DMI_PRODUCT_NAME, "UMPC-01"), | ||
| 332 | }, | ||
| 333 | .driver_data = (void *)&lcd1200x1920_rightside_up, | ||
| 322 | }, { /* OneGX1 Pro */ | 334 | }, { /* OneGX1 Pro */ |
| 323 | .matches = { | 335 | .matches = { |
| 324 | DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SYSTEM_MANUFACTURER"), | 336 | DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SYSTEM_MANUFACTURER"), |
| @@ -2201,8 +2201,11 @@ static void _psr_invalidate_handle(struct intel_dp *intel_dp) · 2200 unmodified lines | |||
| 2201 | if (intel_dp->psr.psr2_sel_fetch_enabled) { | 2201 | if (intel_dp->psr.psr2_sel_fetch_enabled) { |
| 2202 | u32 val; | 2202 | u32 val; |
| 2203 | 2203 | ||
| 2204 | if (intel_dp->psr.psr2_sel_fetch_cff_enabled) | 2204 | if (intel_dp->psr.psr2_sel_fetch_cff_enabled) { |
| 2205 | /* Send one update otherwise lag is observed in screen */ | ||
| 2206 | intel_de_write(dev_priv, CURSURFLIVE(intel_dp->psr.pipe), 0); | ||
| 2205 | return; | 2207 | return; |
| 2208 | } | ||
| 2206 | 2209 | ||
| 2207 | val = man_trk_ctl_enable_bit_get(dev_priv) | | 2210 | val = man_trk_ctl_enable_bit_get(dev_priv) | |
| 2208 | man_trk_ctl_partial_frame_bit_get(dev_priv) | | 2211 | man_trk_ctl_partial_frame_bit_get(dev_priv) | |
| @@ -40,13 +40,13 @@ static struct sg_table *i915_gem_map_dma_buf(struct dma_buf_attachment *attachme · 39 unmodified lines | |||
| 40 | goto err; | 40 | goto err; |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | ret = sg_alloc_table(st, obj->mm.pages->nents, GFP_KERNEL); | 43 | ret = sg_alloc_table(st, obj->mm.pages->orig_nents, GFP_KERNEL); |
| 44 | if (ret) | 44 | if (ret) |
| 45 | goto err_free; | 45 | goto err_free; |
| 46 | 46 | ||
| 47 | src = obj->mm.pages->sgl; | 47 | src = obj->mm.pages->sgl; |
| 48 | dst = st->sgl; | 48 | dst = st->sgl; |
| 49 | for (i = 0; i < obj->mm.pages->nents; i++) { | 49 | for (i = 0; i < obj->mm.pages->orig_nents; i++) { |
| 50 | sg_set_page(dst, sg_page(src), src->length, 0); | 50 | sg_set_page(dst, sg_page(src), src->length, 0); |
| 51 | dst = sg_next(dst); | 51 | dst = sg_next(dst); |
| 52 | src = sg_next(src); | 52 | src = sg_next(src); |
| @@ -369,14 +369,14 @@ __i915_gem_object_release_shmem(struct drm_i915_gem_object *obj, · 368 unmodified lines | |||
| 369 | 369 | ||
| 370 | __start_cpu_write(obj); | 370 | __start_cpu_write(obj); |
| 371 | /* | 371 | /* |
| 372 | * On non-LLC platforms, force the flush-on-acquire if this is ever | 372 | * On non-LLC igfx platforms, force the flush-on-acquire if this is ever |
| 373 | * swapped-in. Our async flush path is not trust worthy enough yet(and | 373 | * swapped-in. Our async flush path is not trust worthy enough yet(and |
| 374 | * happens in the wrong order), and with some tricks it's conceivable | 374 | * happens in the wrong order), and with some tricks it's conceivable |
| 375 | * for userspace to change the cache-level to I915_CACHE_NONE after the | 375 | * for userspace to change the cache-level to I915_CACHE_NONE after the |
| 376 | * pages are swapped-in, and since execbuf binds the object before doing | 376 | * pages are swapped-in, and since execbuf binds the object before doing |
| 377 | * the async flush, we have a race window. | 377 | * the async flush, we have a race window. |
| 378 | */ | 378 | */ |
| 379 | if (!HAS_LLC(i915)) | 379 | if (!HAS_LLC(i915) && !IS_DGFX(i915)) |
| 380 | obj->cache_dirty = true; | 380 | obj->cache_dirty = true; |
| 381 | } | 381 | } |
| 382 | 382 | ||
| @@ -428,9 +428,10 @@ probe_range(struct mm_struct *mm, unsigned long addr, unsigned long len) · 427 unmodified lines | |||
| 428 | { | 428 | { |
| 429 | VMA_ITERATOR(vmi, mm, addr); | 429 | VMA_ITERATOR(vmi, mm, addr); |
| 430 | struct vm_area_struct *vma; | 430 | struct vm_area_struct *vma; |
| 431 | unsigned long end = addr + len; | ||
| 431 | 432 | ||
| 432 | mmap_read_lock(mm); | 433 | mmap_read_lock(mm); |
| 433 | for_each_vma_range(vmi, vma, addr + len) { | 434 | for_each_vma_range(vmi, vma, end) { |
| 434 | /* Check for holes, note that we also update the addr below */ | 435 | /* Check for holes, note that we also update the addr below */ |
| 435 | if (vma->vm_start > addr) | 436 | if (vma->vm_start > addr) |
| 436 | break; | 437 | break; |
| @@ -442,7 +443,7 @@ probe_range(struct mm_struct *mm, unsigned long addr, unsigned long len) · 5 unmodified lines | |||
| 442 | } | 443 | } |
| 443 | mmap_read_unlock(mm); | 444 | mmap_read_unlock(mm); |
| 444 | 445 | ||
| 445 | if (vma) | 446 | if (vma || addr < end) |
| 446 | return -EFAULT; | 447 | return -EFAULT; |
| 447 | return 0; | 448 | return 0; |
| 448 | } | 449 | } |
| @@ -250,13 +250,22 @@ void panfrost_mmu_reset(struct panfrost_device *pfdev) · 249 unmodified lines | |||
| 250 | 250 | ||
| 251 | static size_t get_pgsize(u64 addr, size_t size, size_t *count) | 251 | static size_t get_pgsize(u64 addr, size_t size, size_t *count) |
| 252 | { | 252 | { |
| 253 | /* | ||
| 254 | * io-pgtable only operates on multiple pages within a single table | ||
| 255 | * entry, so we need to split at boundaries of the table size, i.e. | ||
| 256 | * the next block size up. The distance from address A to the next | ||
| 257 | * boundary of block size B is logically B - A % B, but in unsigned | ||
| 258 | * two's complement where B is a power of two we get the equivalence | ||
| 259 | * B - A % B == (B - A) % B == (n * B - A) % B, and choose n = 0 :) | ||
| 260 | */ | ||
| 253 | size_t blk_offset = -addr % SZ_2M; | 261 | size_t blk_offset = -addr % SZ_2M; |
| 254 | 262 | ||
| 255 | if (blk_offset || size < SZ_2M) { | 263 | if (blk_offset || size < SZ_2M) { |
| 256 | *count = min_not_zero(blk_offset, size) / SZ_4K; | 264 | *count = min_not_zero(blk_offset, size) / SZ_4K; |
| 257 | return SZ_4K; | 265 | return SZ_4K; |
| 258 | } | 266 | } |
| 259 | *count = size / SZ_2M; | 267 | blk_offset = -addr % SZ_1G ?: SZ_1G; |
| 268 | *count = min(blk_offset, size) / SZ_2M; | ||
| 260 | return SZ_2M; | 269 | return SZ_2M; |
| 261 | } | 270 | } |
| 262 | 271 | ||
| @@ -44,13 +44,18 @@ config DRM_RCAR_LVDS · 43 unmodified lines | |||
| 44 | select OF_FLATTREE | 44 | select OF_FLATTREE |
| 45 | select OF_OVERLAY | 45 | select OF_OVERLAY |
| 46 | 46 | ||
| 47 | config DRM_RCAR_MIPI_DSI | 47 | config DRM_RCAR_USE_MIPI_DSI |
| 48 | tristate "R-Car DU MIPI DSI Encoder Support" | 48 | bool "R-Car DU MIPI DSI Encoder Support" |
| 49 | depends on DRM && DRM_BRIDGE && OF | 49 | depends on DRM_BRIDGE && OF |
| 50 | select DRM_MIPI_DSI | 50 | default DRM_RCAR_DU |
| 51 | help | 51 | help |
| 52 | Enable support for the R-Car Display Unit embedded MIPI DSI encoders. | 52 | Enable support for the R-Car Display Unit embedded MIPI DSI encoders. |
| 53 | 53 | ||
| 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 | |||
| 54 | config DRM_RCAR_VSP | 59 | config DRM_RCAR_VSP |
| 55 | bool "R-Car DU VSP Compositor Support" if ARM | 60 | bool "R-Car DU VSP Compositor Support" if ARM |
| 56 | default y if ARM64 | 61 | default y if ARM64 |
| @@ -476,7 +476,12 @@ static int __init vc4_drm_register(void) · 475 unmodified lines | |||
| 476 | if (ret) | 476 | if (ret) |
| 477 | return ret; | 477 | return ret; |
| 478 | 478 | ||
| 479 | return platform_driver_register(&vc4_platform_driver); | 479 | ret = platform_driver_register(&vc4_platform_driver); |
| 480 | if (ret) | ||
| 481 | platform_unregister_drivers(component_drivers, | ||
| 482 | ARRAY_SIZE(component_drivers)); | ||
| 483 | |||
| 484 | return ret; | ||
| 480 | } | 485 | } |
| 481 | 486 | ||
| 482 | static void __exit vc4_drm_unregister(void) | 487 | static void __exit vc4_drm_unregister(void) |
| @@ -349,27 +349,40 @@ static int vc4_hdmi_reset_link(struct drm_connector *connector, · 348 unmodified lines | |||
| 349 | if (!crtc_state->active) | 349 | if (!crtc_state->active) |
| 350 | return 0; | 350 | return 0; |
| 351 | 351 | ||
| 352 | if (!vc4_hdmi_supports_scrambling(encoder)) | 352 | mutex_lock(&vc4_hdmi->mutex); |
| 353 | |||
| 354 | if (!vc4_hdmi_supports_scrambling(encoder)) { | ||
| 355 | mutex_unlock(&vc4_hdmi->mutex); | ||
| 353 | return 0; | 356 | return 0; |
| 357 | } | ||
| 354 | 358 | ||
| 355 | scrambling_needed = vc4_hdmi_mode_needs_scrambling(&vc4_hdmi->saved_adjusted_mode, | 359 | scrambling_needed = vc4_hdmi_mode_needs_scrambling(&vc4_hdmi->saved_adjusted_mode, |
| 356 | vc4_hdmi->output_bpc, | 360 | vc4_hdmi->output_bpc, |
| 357 | vc4_hdmi->output_format); | 361 | vc4_hdmi->output_format); |
| 358 | if (!scrambling_needed) | 362 | if (!scrambling_needed) { |
| 363 | mutex_unlock(&vc4_hdmi->mutex); | ||
| 359 | return 0; | 364 | return 0; |
| 365 | } | ||
| 360 | 366 | ||
| 361 | if (conn_state->commit && | 367 | if (conn_state->commit && |
| 362 | !try_wait_for_completion(&conn_state->commit->hw_done)) | 368 | !try_wait_for_completion(&conn_state->commit->hw_done)) { |
| 369 | mutex_unlock(&vc4_hdmi->mutex); | ||
| 363 | return 0; | 370 | return 0; |
| 371 | } | ||
| 364 | 372 | ||
| 365 | ret = drm_scdc_readb(connector->ddc, SCDC_TMDS_CONFIG, &config); | 373 | ret = drm_scdc_readb(connector->ddc, SCDC_TMDS_CONFIG, &config); |
| 366 | if (ret < 0) { | 374 | if (ret < 0) { |
| 367 | drm_err(drm, "Failed to read TMDS config: %d\n", ret); | 375 | drm_err(drm, "Failed to read TMDS config: %d\n", ret); |
| 376 | mutex_unlock(&vc4_hdmi->mutex); | ||
| 368 | return 0; | 377 | return 0; |
| 369 | } | 378 | } |
| 370 | 379 | ||
| 371 | if (!!(config & SCDC_SCRAMBLING_ENABLE) == scrambling_needed) | 380 | if (!!(config & SCDC_SCRAMBLING_ENABLE) == scrambling_needed) { |
| 381 | mutex_unlock(&vc4_hdmi->mutex); | ||
| 372 | return 0; | 382 | return 0; |
| 383 | } | ||
| 384 | |||
| 385 | mutex_unlock(&vc4_hdmi->mutex); | ||
| 373 | 386 | ||
| 374 | /* | 387 | /* |
| 375 | * HDMI 2.0 says that one should not send scrambled data | 388 | * HDMI 2.0 says that one should not send scrambled data |
| @@ -397,9 +410,8 @@ static void vc4_hdmi_handle_hotplug(struct vc4_hdmi *vc4_hdmi, · 21 unmodified lines | |||
| 397 | * .adap_enable, which leads to that funtion being called with | 410 | * .adap_enable, which leads to that funtion being called with |
| 398 | * our mutex held. | 411 | * our mutex held. |
| 399 | * | 412 | * |
| 400 | * A similar situation occurs with | 413 | * A similar situation occurs with vc4_hdmi_reset_link() that |
| 401 | * drm_atomic_helper_connector_hdmi_reset_link() that will call | 414 | * will call into our KMS hooks if the scrambling was enabled. |
| 402 | * into our KMS hooks if the scrambling was enabled. | ||
| 403 | * | 415 | * |
| 404 | * Concurrency isn't an issue at the moment since we don't share | 416 | * Concurrency isn't an issue at the moment since we don't share |
| 405 | * any state with any of the other frameworks so we can ignore | 417 | * any state with any of the other frameworks so we can ignore |
| @@ -3160,9 +3172,16 @@ static int vc4_hdmi_init_resources(struct drm_device *drm, · 2754 unmodified lines | |||
| 3160 | DRM_ERROR("Failed to get HDMI state machine clock\n"); | 3172 | DRM_ERROR("Failed to get HDMI state machine clock\n"); |
| 3161 | return PTR_ERR(vc4_hdmi->hsm_clock); | 3173 | return PTR_ERR(vc4_hdmi->hsm_clock); |
| 3162 | } | 3174 | } |
| 3175 | |||
| 3163 | vc4_hdmi->audio_clock = vc4_hdmi->hsm_clock; | 3176 | vc4_hdmi->audio_clock = vc4_hdmi->hsm_clock; |
| 3164 | vc4_hdmi->cec_clock = vc4_hdmi->hsm_clock; | 3177 | vc4_hdmi->cec_clock = vc4_hdmi->hsm_clock; |
| 3165 | 3178 | ||
| 3179 | vc4_hdmi->hsm_rpm_clock = devm_clk_get(dev, "hdmi"); | ||
| 3180 | if (IS_ERR(vc4_hdmi->hsm_rpm_clock)) { | ||
| 3181 | DRM_ERROR("Failed to get HDMI state machine clock\n"); | ||
| 3182 | return PTR_ERR(vc4_hdmi->hsm_rpm_clock); | ||
| 3183 | } | ||
| 3184 | |||
| 3166 | return 0; | 3185 | return 0; |
| 3167 | } | 3186 | } |
| 3168 | 3187 | ||
| @@ -3245,6 +3264,12 @@ static int vc5_hdmi_init_resources(struct drm_device *drm, · 76 unmodified lines | |||
| 3245 | return PTR_ERR(vc4_hdmi->hsm_clock); | 3264 | return PTR_ERR(vc4_hdmi->hsm_clock); |
| 3246 | } | 3265 | } |
| 3247 | 3266 | ||
| 3267 | vc4_hdmi->hsm_rpm_clock = devm_clk_get(dev, "hdmi"); | ||
| 3268 | if (IS_ERR(vc4_hdmi->hsm_rpm_clock)) { | ||
| 3269 | DRM_ERROR("Failed to get HDMI state machine clock\n"); | ||
| 3270 | return PTR_ERR(vc4_hdmi->hsm_rpm_clock); | ||
| 3271 | } | ||
| 3272 | |||
| 3248 | vc4_hdmi->pixel_bvb_clock = devm_clk_get(dev, "bvb"); | 3273 | vc4_hdmi->pixel_bvb_clock = devm_clk_get(dev, "bvb"); |
| 3249 | if (IS_ERR(vc4_hdmi->pixel_bvb_clock)) { | 3274 | if (IS_ERR(vc4_hdmi->pixel_bvb_clock)) { |
| 3250 | DRM_ERROR("Failed to get pixel bvb clock\n"); | 3275 | DRM_ERROR("Failed to get pixel bvb clock\n"); |
| @@ -3308,7 +3333,7 @@ static int vc4_hdmi_runtime_suspend(struct device *dev) · 57 unmodified lines | |||
| 3308 | { | 3333 | { |
| 3309 | struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev); | 3334 | struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev); |
| 3310 | 3335 | ||
| 3311 | clk_disable_unprepare(vc4_hdmi->hsm_clock); | 3336 | clk_disable_unprepare(vc4_hdmi->hsm_rpm_clock); |
| 3312 | 3337 | ||
| 3313 | return 0; | 3338 | return 0; |
| 3314 | } | 3339 | } |
| @@ -3326,11 +3351,11 @@ static int vc4_hdmi_runtime_resume(struct device *dev) · 11 unmodified lines | |||
| 3326 | * its frequency while the power domain is active so that it | 3351 | * its frequency while the power domain is active so that it |
| 3327 | * keeps its rate. | 3352 | * keeps its rate. |
| 3328 | */ | 3353 | */ |
| 3329 | ret = clk_set_min_rate(vc4_hdmi->hsm_clock, HSM_MIN_CLOCK_FREQ); | 3354 | ret = clk_set_min_rate(vc4_hdmi->hsm_rpm_clock, HSM_MIN_CLOCK_FREQ); |
| 3330 | if (ret) | 3355 | if (ret) |
| 3331 | return ret; | 3356 | return ret; |
| 3332 | 3357 | ||
| 3333 | ret = clk_prepare_enable(vc4_hdmi->hsm_clock); | 3358 | ret = clk_prepare_enable(vc4_hdmi->hsm_rpm_clock); |
| 3334 | if (ret) | 3359 | if (ret) |
| 3335 | return ret; | 3360 | return ret; |
| 3336 | 3361 | ||
| @@ -3343,7 +3368,7 @@ static int vc4_hdmi_runtime_resume(struct device *dev) · 6 unmodified lines | |||
| 3343 | * case, it will lead to a silent CPU stall. Let's make sure we | 3368 | * case, it will lead to a silent CPU stall. Let's make sure we |
| 3344 | * prevent such a case. | 3369 | * prevent such a case. |
| 3345 | */ | 3370 | */ |
| 3346 | rate = clk_get_rate(vc4_hdmi->hsm_clock); | 3371 | rate = clk_get_rate(vc4_hdmi->hsm_rpm_clock); |
| 3347 | if (!rate) { | 3372 | if (!rate) { |
| 3348 | ret = -EINVAL; | 3373 | ret = -EINVAL; |
| 3349 | goto err_disable_clk; | 3374 | goto err_disable_clk; |
| @@ -172,6 +172,7 @@ struct vc4_hdmi { · 171 unmodified lines | |||
| 172 | struct clk *cec_clock; | 172 | struct clk *cec_clock; |
| 173 | struct clk *pixel_clock; | 173 | struct clk *pixel_clock; |
| 174 | struct clk *hsm_clock; | 174 | struct clk *hsm_clock; |
| 175 | struct clk *hsm_rpm_clock; | ||
| 175 | struct clk *audio_clock; | 176 | struct clk *audio_clock; |
| 176 | struct clk *pixel_bvb_clock; | 177 | struct clk *pixel_bvb_clock; |
| 177 | 178 | ||
| @@ -219,14 +219,13 @@ static void asus_report_tool_width(struct asus_drvdata *drvdat) · 218 unmodified lines | |||
| 219 | { | 219 | { |
| 220 | struct input_mt *mt = drvdat->input->mt; | 220 | struct input_mt *mt = drvdat->input->mt; |
| 221 | struct input_mt_slot *oldest; | 221 | struct input_mt_slot *oldest; |
| 222 | int oldid, count, i; | 222 | int oldid, i; |
| 223 | 223 | ||
| 224 | if (drvdat->tp->contact_size < 5) | 224 | if (drvdat->tp->contact_size < 5) |
| 225 | return; | 225 | return; |
| 226 | 226 | ||
| 227 | oldest = NULL; | 227 | oldest = NULL; |
| 228 | oldid = mt->trkid; | 228 | oldid = mt->trkid; |
| 229 | count = 0; | ||
| 230 | 229 | ||
| 231 | for (i = 0; i < mt->num_slots; ++i) { | 230 | for (i = 0; i < mt->num_slots; ++i) { |
| 232 | struct input_mt_slot *ps = &mt->slots[i]; | 231 | struct input_mt_slot *ps = &mt->slots[i]; |
| @@ -238,7 +237,6 @@ static void asus_report_tool_width(struct asus_drvdata *drvdat) · 5 unmodified lines | |||
| 238 | oldest = ps; | 237 | oldest = ps; |
| 239 | oldid = id; | 238 | oldid = id; |
| 240 | } | 239 | } |
| 241 | count++; | ||
| 242 | } | 240 | } |
| 243 | 241 | ||
| 244 | if (oldest) { | 242 | if (oldest) { |
| @@ -499,7 +499,7 @@ static int mousevsc_probe(struct hv_device *device, · 498 unmodified lines | |||
| 499 | 499 | ||
| 500 | ret = hid_add_device(hid_dev); | 500 | ret = hid_add_device(hid_dev); |
| 501 | if (ret) | 501 | if (ret) |
| 502 | goto probe_err1; | 502 | goto probe_err2; |
| 503 | 503 | ||
| 504 | 504 | ||
| 505 | ret = hid_parse(hid_dev); | 505 | ret = hid_parse(hid_dev); |
| @@ -2520,11 +2520,12 @@ static void wacom_wac_pen_report(struct hid_device *hdev, · 2519 unmodified lines | |||
| 2520 | 2520 | ||
| 2521 | if (!delay_pen_events(wacom_wac) && wacom_wac->tool[0]) { | 2521 | if (!delay_pen_events(wacom_wac) && wacom_wac->tool[0]) { |
| 2522 | int id = wacom_wac->id[0]; | 2522 | int id = wacom_wac->id[0]; |
| 2523 | if (wacom_wac->features.quirks & WACOM_QUIRK_PEN_BUTTON3 && | 2523 | if (wacom_wac->features.quirks & WACOM_QUIRK_PEN_BUTTON3) { |
| 2524 | wacom_wac->hid_data.barrelswitch & wacom_wac->hid_data.barrelswitch2) { | 2524 | int sw_state = wacom_wac->hid_data.barrelswitch | |
| 2525 | wacom_wac->hid_data.barrelswitch = 0; | 2525 | (wacom_wac->hid_data.barrelswitch2 << 1); |
| 2526 | wacom_wac->hid_data.barrelswitch2 = 0; | 2526 | wacom_wac->hid_data.barrelswitch = sw_state == 1; |
| 2527 | wacom_wac->hid_data.barrelswitch3 = 1; | 2527 | wacom_wac->hid_data.barrelswitch2 = sw_state == 2; |
| 2528 | wacom_wac->hid_data.barrelswitch3 = sw_state == 3; | ||
| 2528 | } | 2529 | } |
| 2529 | input_report_key(input, BTN_STYLUS, wacom_wac->hid_data.barrelswitch); | 2530 | input_report_key(input, BTN_STYLUS, wacom_wac->hid_data.barrelswitch); |
| 2530 | input_report_key(input, BTN_STYLUS2, wacom_wac->hid_data.barrelswitch2); | 2531 | input_report_key(input, BTN_STYLUS2, wacom_wac->hid_data.barrelswitch2); |
| @@ -905,7 +905,7 @@ static unsigned long handle_pg_range(unsigned long pg_start, · 904 unmodified lines | |||
| 905 | * We have some residual hot add range | 905 | * We have some residual hot add range |
| 906 | * that needs to be hot added; hot add | 906 | * that needs to be hot added; hot add |
| 907 | * it now. Hot add a multiple of | 907 | * it now. Hot add a multiple of |
| 908 | * of HA_CHUNK that fully covers the pages | 908 | * HA_CHUNK that fully covers the pages |
| 909 | * we have. | 909 | * we have. |
| 910 | */ | 910 | */ |
| 911 | size = (has->end_pfn - has->ha_end_pfn); | 911 | size = (has->end_pfn - has->ha_end_pfn); |
| @@ -22,6 +22,7 @@ · 21 unmodified lines | |||
| 22 | struct qcom_hwspinlock_of_data { | 22 | struct qcom_hwspinlock_of_data { |
| 23 | u32 offset; | 23 | u32 offset; |
| 24 | u32 stride; | 24 | u32 stride; |
| 25 | const struct regmap_config *regmap_config; | ||
| 25 | }; | 26 | }; |
| 26 | 27 | ||
| 27 | static int qcom_hwspinlock_trylock(struct hwspinlock *lock) | 28 | 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 | |||
| 73 | .stride = 0x4, | 74 | .stride = 0x4, |
| 74 | }; | 75 | }; |
| 75 | 76 | ||
| 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 | |||
| 77 | static const struct qcom_hwspinlock_of_data of_tcsr_mutex = { | 99 | static const struct qcom_hwspinlock_of_data of_tcsr_mutex = { |
| 78 | .offset = 0, | 100 | .offset = 0, |
| 79 | .stride = 0x1000, | 101 | .stride = 0x1000, |
| 102 | .regmap_config = &tcsr_mutex_config, | ||
| 80 | }; | 103 | }; |
| 81 | 104 | ||
| 82 | static const struct of_device_id qcom_hwspinlock_of_match[] = { | 105 | static const struct of_device_id qcom_hwspinlock_of_match[] = { |
| 83 | { .compatible = "qcom,sfpb-mutex", .data = &of_sfpb_mutex }, | 106 | { .compatible = "qcom,sfpb-mutex", .data = &of_sfpb_mutex }, |
| 84 | { .compatible = "qcom,tcsr-mutex", .data = &of_tcsr_mutex }, | 107 | { .compatible = "qcom,tcsr-mutex", .data = &of_tcsr_mutex }, |
| 108 | { .compatible = "qcom,apq8084-tcsr-mutex", .data = &of_msm8226_tcsr_mutex }, | ||
| 109 | { .compatible = "qcom,ipq6018-tcsr-mutex", .data = &of_msm8226_tcsr_mutex }, | ||
| 110 | { .compatible = "qcom,msm8226-tcsr-mutex", .data = &of_msm8226_tcsr_mutex }, | ||
| 111 | { .compatible = "qcom,msm8974-tcsr-mutex", .data = &of_msm8226_tcsr_mutex }, | ||
| 112 | { .compatible = "qcom,msm8994-tcsr-mutex", .data = &of_msm8226_tcsr_mutex }, | ||
| 85 | { } | 113 | { } |
| 86 | }; | 114 | }; |
| 87 | MODULE_DEVICE_TABLE(of, qcom_hwspinlock_of_match); | 115 | 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 | |||
| 117 | return regmap; | 145 | return regmap; |
| 118 | } | 146 | } |
| 119 | 147 | ||
| 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 | |||
| 128 | static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev, | 148 | static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev, |
| 129 | u32 *offset, u32 *stride) | 149 | u32 *offset, u32 *stride) |
| 130 | { | 150 | { |
| @@ -133,6 +153,8 @@ static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev, · 2 unmodified lines | |||
| 133 | void __iomem *base; | 153 | void __iomem *base; |
| 134 | 154 | ||
| 135 | data = of_device_get_match_data(dev); | 155 | data = of_device_get_match_data(dev); |
| 156 | if (!data->regmap_config) | ||
| 157 | return ERR_PTR(-EINVAL); | ||
| 136 | 158 | ||
| 137 | *offset = data->offset; | 159 | *offset = data->offset; |
| 138 | *stride = data->stride; | 160 | *stride = data->stride; |
| @@ -141,7 +163,7 @@ static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev, · 2 unmodified lines | |||
| 141 | if (IS_ERR(base)) | 163 | if (IS_ERR(base)) |
| 142 | return ERR_CAST(base); | 164 | return ERR_CAST(base); |
| 143 | 165 | ||
| 144 | return devm_regmap_init_mmio(dev, base, &tcsr_mutex_config); | 166 | return devm_regmap_init_mmio(dev, base, data->regmap_config); |
| 145 | } | 167 | } |
| 146 | 168 | ||
| 147 | static int qcom_hwspinlock_probe(struct platform_device *pdev) | 169 | static int qcom_hwspinlock_probe(struct platform_device *pdev) |
| @@ -12,6 +12,7 @@ · 11 unmodified lines | |||
| 12 | #include <linux/bitops.h> | 12 | #include <linux/bitops.h> |
| 13 | #include <linux/delay.h> | 13 | #include <linux/delay.h> |
| 14 | 14 | ||
| 15 | #include "sdhci-cqhci.h" | ||
| 15 | #include "sdhci-pltfm.h" | 16 | #include "sdhci-pltfm.h" |
| 16 | #include "cqhci.h" | 17 | #include "cqhci.h" |
| 17 | 18 | ||
| @@ -55,7 +56,7 @@ static void brcmstb_reset(struct sdhci_host *host, u8 mask) · 37 unmodified lines | |||
| 55 | struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); | 56 | struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); |
| 56 | struct sdhci_brcmstb_priv *priv = sdhci_pltfm_priv(pltfm_host); | 57 | struct sdhci_brcmstb_priv *priv = sdhci_pltfm_priv(pltfm_host); |
| 57 | 58 | ||
| 58 | sdhci_reset(host, mask); | 59 | sdhci_and_cqhci_reset(host, mask); |
| 59 | 60 | ||
| 60 | /* Reset will clear this, so re-enable it */ | 61 | /* Reset will clear this, so re-enable it */ |
| 61 | if (priv->flags & BRCMSTB_PRIV_FLAGS_GATE_CLOCK) | 62 | if (priv->flags & BRCMSTB_PRIV_FLAGS_GATE_CLOCK) |
| @@ -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__ */ | ||
| @@ -25,6 +25,7 @@ · 24 unmodified lines | |||
| 25 | #include <linux/of_device.h> | 25 | #include <linux/of_device.h> |
| 26 | #include <linux/pinctrl/consumer.h> | 26 | #include <linux/pinctrl/consumer.h> |
| 27 | #include <linux/pm_runtime.h> | 27 | #include <linux/pm_runtime.h> |
| 28 | #include "sdhci-cqhci.h" | ||
| 28 | #include "sdhci-pltfm.h" | 29 | #include "sdhci-pltfm.h" |
| 29 | #include "sdhci-esdhc.h" | 30 | #include "sdhci-esdhc.h" |
| 30 | #include "cqhci.h" | 31 | #include "cqhci.h" |
| @@ -1288,7 +1289,7 @@ static void esdhc_set_uhs_signaling(struct sdhci_host *host, unsigned timing) · 1257 unmodified lines | |||
| 1288 | 1289 | ||
| 1289 | static void esdhc_reset(struct sdhci_host *host, u8 mask) | 1290 | static void esdhc_reset(struct sdhci_host *host, u8 mask) |
| 1290 | { | 1291 | { |
| 1291 | sdhci_reset(host, mask); | 1292 | sdhci_and_cqhci_reset(host, mask); |
| 1292 | 1293 | ||
| 1293 | sdhci_writel(host, host->ier, SDHCI_INT_ENABLE); | 1294 | sdhci_writel(host, host->ier, SDHCI_INT_ENABLE); |
| 1294 | sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE); | 1295 | sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE); |
| @@ -1671,14 +1672,14 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) · 376 unmodified lines | |||
| 1671 | if (imx_data->socdata->flags & ESDHC_FLAG_ERR004536) | 1672 | if (imx_data->socdata->flags & ESDHC_FLAG_ERR004536) |
| 1672 | host->quirks |= SDHCI_QUIRK_BROKEN_ADMA; | 1673 | host->quirks |= SDHCI_QUIRK_BROKEN_ADMA; |
| 1673 | 1674 | ||
| 1674 | if (host->caps & MMC_CAP_8_BIT_DATA && | 1675 | if (host->mmc->caps & MMC_CAP_8_BIT_DATA && |
| 1675 | imx_data->socdata->flags & ESDHC_FLAG_HS400) | 1676 | imx_data->socdata->flags & ESDHC_FLAG_HS400) |
| 1676 | host->mmc->caps2 |= MMC_CAP2_HS400; | 1677 | host->mmc->caps2 |= MMC_CAP2_HS400; |
| 1677 | 1678 | ||
| 1678 | if (imx_data->socdata->flags & ESDHC_FLAG_BROKEN_AUTO_CMD23) | 1679 | if (imx_data->socdata->flags & ESDHC_FLAG_BROKEN_AUTO_CMD23) |
| 1679 | host->quirks2 |= SDHCI_QUIRK2_ACMD23_BROKEN; | 1680 | host->quirks2 |= SDHCI_QUIRK2_ACMD23_BROKEN; |
| 1680 | 1681 | ||
| 1681 | if (host->caps & MMC_CAP_8_BIT_DATA && | 1682 | if (host->mmc->caps & MMC_CAP_8_BIT_DATA && |
| 1682 | imx_data->socdata->flags & ESDHC_FLAG_HS400_ES) { | 1683 | imx_data->socdata->flags & ESDHC_FLAG_HS400_ES) { |
| 1683 | host->mmc->caps2 |= MMC_CAP2_HS400_ES; | 1684 | host->mmc->caps2 |= MMC_CAP2_HS400_ES; |
| 1684 | host->mmc_host_ops.hs400_enhanced_strobe = | 1685 | host->mmc_host_ops.hs400_enhanced_strobe = |
| @@ -25,6 +25,7 @@ · 24 unmodified lines | |||
| 25 | #include <linux/firmware/xlnx-zynqmp.h> | 25 | #include <linux/firmware/xlnx-zynqmp.h> |
| 26 | 26 | ||
| 27 | #include "cqhci.h" | 27 | #include "cqhci.h" |
| 28 | #include "sdhci-cqhci.h" | ||
| 28 | #include "sdhci-pltfm.h" | 29 | #include "sdhci-pltfm.h" |
| 29 | 30 | ||
| 30 | #define SDHCI_ARASAN_VENDOR_REGISTER 0x78 | 31 | #define SDHCI_ARASAN_VENDOR_REGISTER 0x78 |
| @@ -366,7 +367,7 @@ static void sdhci_arasan_reset(struct sdhci_host *host, u8 mask) · 335 unmodified lines | |||
| 366 | struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); | 367 | struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); |
| 367 | struct sdhci_arasan_data *sdhci_arasan = sdhci_pltfm_priv(pltfm_host); | 368 | struct sdhci_arasan_data *sdhci_arasan = sdhci_pltfm_priv(pltfm_host); |
| 368 | 369 | ||
| 369 | sdhci_reset(host, mask); | 370 | sdhci_and_cqhci_reset(host, mask); |
| 370 | 371 | ||
| 371 | if (sdhci_arasan->quirks & SDHCI_ARASAN_QUIRK_FORCE_CDTEST) { | 372 | if (sdhci_arasan->quirks & SDHCI_ARASAN_QUIRK_FORCE_CDTEST) { |
| 372 | ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL); | 373 | ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL); |
| @@ -28,6 +28,7 @@ · 27 unmodified lines | |||
| 28 | 28 | ||
| 29 | #include <soc/tegra/common.h> | 29 | #include <soc/tegra/common.h> |
| 30 | 30 | ||
| 31 | #include "sdhci-cqhci.h" | ||
| 31 | #include "sdhci-pltfm.h" | 32 | #include "sdhci-pltfm.h" |
| 32 | #include "cqhci.h" | 33 | #include "cqhci.h" |
| 33 | 34 | ||
| @@ -367,7 +368,7 @@ static void tegra_sdhci_reset(struct sdhci_host *host, u8 mask) · 333 unmodified lines | |||
| 367 | const struct sdhci_tegra_soc_data *soc_data = tegra_host->soc_data; | 368 | const struct sdhci_tegra_soc_data *soc_data = tegra_host->soc_data; |
| 368 | u32 misc_ctrl, clk_ctrl, pad_ctrl; | 369 | u32 misc_ctrl, clk_ctrl, pad_ctrl; |
| 369 | 370 | ||
| 370 | sdhci_reset(host, mask); | 371 | sdhci_and_cqhci_reset(host, mask); |
| 371 | 372 | ||
| 372 | if (!(mask & SDHCI_RESET_ALL)) | 373 | if (!(mask & SDHCI_RESET_ALL)) |
| 373 | return; | 374 | return; |
| @@ -15,6 +15,7 @@ · 14 unmodified lines | |||
| 15 | #include <linux/sys_soc.h> | 15 | #include <linux/sys_soc.h> |
| 16 | 16 | ||
| 17 | #include "cqhci.h" | 17 | #include "cqhci.h" |
| 18 | #include "sdhci-cqhci.h" | ||
| 18 | #include "sdhci-pltfm.h" | 19 | #include "sdhci-pltfm.h" |
| 19 | 20 | ||
| 20 | /* CTL_CFG Registers */ | 21 | /* CTL_CFG Registers */ |
| @@ -378,7 +379,7 @@ static void sdhci_am654_reset(struct sdhci_host *host, u8 mask) · 357 unmodified lines | |||
| 378 | struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); | 379 | struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); |
| 379 | struct sdhci_am654_data *sdhci_am654 = sdhci_pltfm_priv(pltfm_host); | 380 | struct sdhci_am654_data *sdhci_am654 = sdhci_pltfm_priv(pltfm_host); |
| 380 | 381 | ||
| 381 | sdhci_reset(host, mask); | 382 | sdhci_and_cqhci_reset(host, mask); |
| 382 | 383 | ||
| 383 | if (sdhci_am654->quirks & SDHCI_AM654_QUIRK_FORCE_CDTEST) { | 384 | if (sdhci_am654->quirks & SDHCI_AM654_QUIRK_FORCE_CDTEST) { |
| 384 | ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL); | 385 | ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL); |
| @@ -464,7 +465,7 @@ static struct sdhci_ops sdhci_am654_ops = { · 79 unmodified lines | |||
| 464 | .set_clock = sdhci_am654_set_clock, | 465 | .set_clock = sdhci_am654_set_clock, |
| 465 | .write_b = sdhci_am654_write_b, | 466 | .write_b = sdhci_am654_write_b, |
| 466 | .irq = sdhci_am654_cqhci_irq, | 467 | .irq = sdhci_am654_cqhci_irq, |
| 467 | .reset = sdhci_reset, | 468 | .reset = sdhci_and_cqhci_reset, |
| 468 | }; | 469 | }; |
| 469 | 470 | ||
| 470 | static const struct sdhci_pltfm_data sdhci_am654_pdata = { | 471 | static const struct sdhci_pltfm_data sdhci_am654_pdata = { |
| @@ -494,7 +495,7 @@ static struct sdhci_ops sdhci_j721e_8bit_ops = { · 23 unmodified lines | |||
| 494 | .set_clock = sdhci_am654_set_clock, | 495 | .set_clock = sdhci_am654_set_clock, |
| 495 | .write_b = sdhci_am654_write_b, | 496 | .write_b = sdhci_am654_write_b, |
| 496 | .irq = sdhci_am654_cqhci_irq, | 497 | .irq = sdhci_am654_cqhci_irq, |
| 497 | .reset = sdhci_reset, | 498 | .reset = sdhci_and_cqhci_reset, |
| 498 | }; | 499 | }; |
| 499 | 500 | ||
| 500 | static const struct sdhci_pltfm_data sdhci_j721e_8bit_pdata = { | 501 | static const struct sdhci_pltfm_data sdhci_j721e_8bit_pdata = { |
| @@ -452,7 +452,7 @@ static netdev_tx_t at91_start_xmit(struct sk_buff *skb, struct net_device *dev) · 451 unmodified lines | |||
| 452 | unsigned int mb, prio; | 452 | unsigned int mb, prio; |
| 453 | u32 reg_mid, reg_mcr; | 453 | u32 reg_mid, reg_mcr; |
| 454 | 454 | ||
| 455 | if (can_dropped_invalid_skb(dev, skb)) | 455 | if (can_dev_dropped_skb(dev, skb)) |
| 456 | return NETDEV_TX_OK; | 456 | return NETDEV_TX_OK; |
| 457 | 457 | ||
| 458 | mb = get_tx_next_mb(priv); | 458 | mb = get_tx_next_mb(priv); |
| @@ -457,7 +457,7 @@ static netdev_tx_t c_can_start_xmit(struct sk_buff *skb, · 456 unmodified lines | |||
| 457 | struct c_can_tx_ring *tx_ring = &priv->tx; | 457 | struct c_can_tx_ring *tx_ring = &priv->tx; |
| 458 | u32 idx, obj, cmd = IF_COMM_TX; | 458 | u32 idx, obj, cmd = IF_COMM_TX; |
| 459 | 459 | ||
| 460 | if (can_dropped_invalid_skb(dev, skb)) | 460 | if (can_dev_dropped_skb(dev, skb)) |
| 461 | return NETDEV_TX_OK; | 461 | return NETDEV_TX_OK; |
| 462 | 462 | ||
| 463 | if (c_can_tx_busy(priv, tx_ring)) | 463 | if (c_can_tx_busy(priv, tx_ring)) |
| @@ -813,7 +813,7 @@ static netdev_tx_t can327_netdev_start_xmit(struct sk_buff *skb, · 812 unmodified lines | |||
| 813 | struct can327 *elm = netdev_priv(dev); | 813 | struct can327 *elm = netdev_priv(dev); |
| 814 | struct can_frame *frame = (struct can_frame *)skb->data; | 814 | struct can_frame *frame = (struct can_frame *)skb->data; |
| 815 | 815 | ||
| 816 | if (can_dropped_invalid_skb(dev, skb)) | 816 | if (can_dev_dropped_skb(dev, skb)) |
| 817 | return NETDEV_TX_OK; | 817 | return NETDEV_TX_OK; |
| 818 | 818 | ||
| 819 | /* We shouldn't get here after a hardware fault: | 819 | /* We shouldn't get here after a hardware fault: |
| @@ -429,7 +429,7 @@ static netdev_tx_t cc770_start_xmit(struct sk_buff *skb, struct net_device *dev) · 428 unmodified lines | |||
| 429 | struct cc770_priv *priv = netdev_priv(dev); | 429 | struct cc770_priv *priv = netdev_priv(dev); |
| 430 | unsigned int mo = obj2msgobj(CC770_OBJ_TX); | 430 | unsigned int mo = obj2msgobj(CC770_OBJ_TX); |
| 431 | 431 | ||
| 432 | if (can_dropped_invalid_skb(dev, skb)) | 432 | if (can_dev_dropped_skb(dev, skb)) |
| 433 | return NETDEV_TX_OK; | 433 | return NETDEV_TX_OK; |
| 434 | 434 | ||
| 435 | netif_stop_queue(dev); | 435 | netif_stop_queue(dev); |
| @@ -600,7 +600,7 @@ static netdev_tx_t ctucan_start_xmit(struct sk_buff *skb, struct net_device *nde · 599 unmodified lines | |||
| 600 | bool ok; | 600 | bool ok; |
| 601 | unsigned long flags; | 601 | unsigned long flags; |
| 602 | 602 | ||
| 603 | if (can_dropped_invalid_skb(ndev, skb)) | 603 | if (can_dev_dropped_skb(ndev, skb)) |
| 604 | return NETDEV_TX_OK; | 604 | return NETDEV_TX_OK; |
| 605 | 605 | ||
| 606 | if (unlikely(!CTU_CAN_FD_TXTNF(priv))) { | 606 | if (unlikely(!CTU_CAN_FD_TXTNF(priv))) { |
| @@ -5,7 +5,6 @@ · 4 unmodified lines | |||
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #include <linux/can/dev.h> | 7 | #include <linux/can/dev.h> |
| 8 | #include <linux/can/netlink.h> | ||
| 9 | #include <linux/module.h> | 8 | #include <linux/module.h> |
| 10 | 9 | ||
| 11 | #define MOD_DESC "CAN device driver interface" | 10 | #define MOD_DESC "CAN device driver interface" |
| @@ -337,8 +336,6 @@ static bool can_skb_headroom_valid(struct net_device *dev, struct sk_buff *skb) · 325 unmodified lines | |||
| 337 | /* Drop a given socketbuffer if it does not contain a valid CAN frame. */ | 336 | /* Drop a given socketbuffer if it does not contain a valid CAN frame. */ |
| 338 | bool can_dropped_invalid_skb(struct net_device *dev, struct sk_buff *skb) | 337 | bool can_dropped_invalid_skb(struct net_device *dev, struct sk_buff *skb) |
| 339 | { | 338 | { |
| 340 | struct can_priv *priv = netdev_priv(dev); | ||
| 341 | |||
| 342 | switch (ntohs(skb->protocol)) { | 339 | switch (ntohs(skb->protocol)) { |
| 343 | case ETH_P_CAN: | 340 | case ETH_P_CAN: |
| 344 | if (!can_is_can_skb(skb)) | 341 | if (!can_is_can_skb(skb)) |
| @@ -359,13 +356,8 @@ bool can_dropped_invalid_skb(struct net_device *dev, struct sk_buff *skb) · 14 unmodified lines | |||
| 359 | goto inval_skb; | 356 | goto inval_skb; |
| 360 | } | 357 | } |
| 361 | 358 | ||
| 362 | if (!can_skb_headroom_valid(dev, skb)) { | 359 | if (!can_skb_headroom_valid(dev, skb)) |
| 363 | goto inval_skb; | 360 | goto inval_skb; |
| 364 | } else if (priv->ctrlmode & CAN_CTRLMODE_LISTENONLY) { | ||
| 365 | netdev_info_once(dev, | ||
| 366 | "interface in listen only mode, dropping skb\n"); | ||
| 367 | goto inval_skb; | ||
| 368 | } | ||
| 369 | 361 | ||
| 370 | return false; | 362 | return false; |
| 371 | 363 | ||
| @@ -742,7 +742,7 @@ static netdev_tx_t flexcan_start_xmit(struct sk_buff *skb, struct net_device *de · 741 unmodified lines | |||
| 742 | u32 ctrl = FLEXCAN_MB_CODE_TX_DATA | ((can_fd_len2dlc(cfd->len)) << 16); | 742 | u32 ctrl = FLEXCAN_MB_CODE_TX_DATA | ((can_fd_len2dlc(cfd->len)) << 16); |
| 743 | int i; | 743 | int i; |
| 744 | 744 | ||
| 745 | if (can_dropped_invalid_skb(dev, skb)) | 745 | if (can_dev_dropped_skb(dev, skb)) |
| 746 | return NETDEV_TX_OK; | 746 | return NETDEV_TX_OK; |
| 747 | 747 | ||
| 748 | netif_stop_queue(dev); | 748 | netif_stop_queue(dev); |
| @@ -1345,7 +1345,7 @@ static netdev_tx_t grcan_start_xmit(struct sk_buff *skb, · 1344 unmodified lines | |||
| 1345 | unsigned long flags; | 1345 | unsigned long flags; |
| 1346 | u32 oneshotmode = priv->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT; | 1346 | u32 oneshotmode = priv->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT; |
| 1347 | 1347 | ||
| 1348 | if (can_dropped_invalid_skb(dev, skb)) | 1348 | if (can_dev_dropped_skb(dev, skb)) |
| 1349 | return NETDEV_TX_OK; | 1349 | return NETDEV_TX_OK; |
| 1350 | 1350 | ||
| 1351 | /* Trying to transmit in silent mode will generate error interrupts, but | 1351 | /* Trying to transmit in silent mode will generate error interrupts, but |
| @@ -860,7 +860,7 @@ static netdev_tx_t ifi_canfd_start_xmit(struct sk_buff *skb, · 859 unmodified lines | |||
| 860 | u32 txst, txid, txdlc; | 860 | u32 txst, txid, txdlc; |
| 861 | int i; | 861 | int i; |
| 862 | 862 | ||
| 863 | if (can_dropped_invalid_skb(ndev, skb)) | 863 | if (can_dev_dropped_skb(ndev, skb)) |
| 864 | return NETDEV_TX_OK; | 864 | return NETDEV_TX_OK; |
| 865 | 865 | ||
| 866 | /* Check if the TX buffer is full */ | 866 | /* Check if the TX buffer is full */ |
| @@ -1693,7 +1693,7 @@ static netdev_tx_t ican3_xmit(struct sk_buff *skb, struct net_device *ndev) · 1692 unmodified lines | |||
| 1693 | void __iomem *desc_addr; | 1693 | void __iomem *desc_addr; |
| 1694 | unsigned long flags; | 1694 | unsigned long flags; |
| 1695 | 1695 | ||
| 1696 | if (can_dropped_invalid_skb(ndev, skb)) | 1696 | if (can_dev_dropped_skb(ndev, skb)) |
| 1697 | return NETDEV_TX_OK; | 1697 | return NETDEV_TX_OK; |
| 1698 | 1698 | ||
| 1699 | spin_lock_irqsave(&mod->lock, flags); | 1699 | spin_lock_irqsave(&mod->lock, flags); |
| @@ -772,7 +772,7 @@ static netdev_tx_t kvaser_pciefd_start_xmit(struct sk_buff *skb, · 771 unmodified lines | |||
| 772 | int nwords; | 772 | int nwords; |
| 773 | u8 count; | 773 | u8 count; |
| 774 | 774 | ||
| 775 | if (can_dropped_invalid_skb(netdev, skb)) | 775 | if (can_dev_dropped_skb(netdev, skb)) |
| 776 | return NETDEV_TX_OK; | 776 | return NETDEV_TX_OK; |
| 777 | 777 | ||
| 778 | nwords = kvaser_pciefd_prepare_tx_packet(&packet, can, skb); | 778 | nwords = kvaser_pciefd_prepare_tx_packet(&packet, can, skb); |
| @@ -1721,7 +1721,7 @@ static netdev_tx_t m_can_start_xmit(struct sk_buff *skb, · 1720 unmodified lines | |||
| 1721 | { | 1721 | { |
| 1722 | struct m_can_classdev *cdev = netdev_priv(dev); | 1722 | struct m_can_classdev *cdev = netdev_priv(dev); |
| 1723 | 1723 | ||
| 1724 | if (can_dropped_invalid_skb(dev, skb)) | 1724 | if (can_dev_dropped_skb(dev, skb)) |
| 1725 | return NETDEV_TX_OK; | 1725 | return NETDEV_TX_OK; |
| 1726 | 1726 | ||
| 1727 | if (cdev->is_peripheral) { | 1727 | if (cdev->is_peripheral) { |
| @@ -191,7 +191,7 @@ static netdev_tx_t mscan_start_xmit(struct sk_buff *skb, struct net_device *dev) · 190 unmodified lines | |||
| 191 | int i, rtr, buf_id; | 191 | int i, rtr, buf_id; |
| 192 | u32 can_id; | 192 | u32 can_id; |
| 193 | 193 | ||
| 194 | if (can_dropped_invalid_skb(dev, skb)) | 194 | if (can_dev_dropped_skb(dev, skb)) |
| 195 | return NETDEV_TX_OK; | 195 | return NETDEV_TX_OK; |
| 196 | 196 | ||
| 197 | out_8(®s->cantier, 0); | 197 | out_8(®s->cantier, 0); |
| @@ -882,7 +882,7 @@ static netdev_tx_t pch_xmit(struct sk_buff *skb, struct net_device *ndev) · 881 unmodified lines | |||
| 882 | int i; | 882 | int i; |
| 883 | u32 id2; | 883 | u32 id2; |
| 884 | 884 | ||
| 885 | if (can_dropped_invalid_skb(ndev, skb)) | 885 | if (can_dev_dropped_skb(ndev, skb)) |
| 886 | return NETDEV_TX_OK; | 886 | return NETDEV_TX_OK; |
| 887 | 887 | ||
| 888 | tx_obj_no = priv->tx_obj; | 888 | tx_obj_no = priv->tx_obj; |
| @@ -651,7 +651,7 @@ static netdev_tx_t peak_canfd_start_xmit(struct sk_buff *skb, · 650 unmodified lines | |||
| 651 | int room_left; | 651 | int room_left; |
| 652 | u8 len; | 652 | u8 len; |
| 653 | 653 | ||
| 654 | if (can_dropped_invalid_skb(ndev, skb)) | 654 | if (can_dev_dropped_skb(ndev, skb)) |
| 655 | return NETDEV_TX_OK; | 655 | return NETDEV_TX_OK; |
| 656 | 656 | ||
| 657 | msg_size = ALIGN(sizeof(*msg) + cf->len, 4); | 657 | msg_size = ALIGN(sizeof(*msg) + cf->len, 4); |
| @@ -590,7 +590,7 @@ static netdev_tx_t rcar_can_start_xmit(struct sk_buff *skb, · 589 unmodified lines | |||
| 590 | struct can_frame *cf = (struct can_frame *)skb->data; | 590 | struct can_frame *cf = (struct can_frame *)skb->data; |
| 591 | u32 data, i; | 591 | u32 data, i; |
| 592 | 592 | ||
| 593 | if (can_dropped_invalid_skb(ndev, skb)) | 593 | if (can_dev_dropped_skb(ndev, skb)) |
| 594 | return NETDEV_TX_OK; | 594 | return NETDEV_TX_OK; |
| 595 | 595 | ||
| 596 | if (cf->can_id & CAN_EFF_FLAG) /* Extended frame format */ | 596 | if (cf->can_id & CAN_EFF_FLAG) /* Extended frame format */ |
| @@ -81,8 +81,7 @@ enum rcanfd_chip_id { · 80 unmodified lines | |||
| 81 | 81 | ||
| 82 | /* RSCFDnCFDGERFL / RSCFDnGERFL */ | 82 | /* RSCFDnCFDGERFL / RSCFDnGERFL */ |
| 83 | #define RCANFD_GERFL_EEF0_7 GENMASK(23, 16) | 83 | #define RCANFD_GERFL_EEF0_7 GENMASK(23, 16) |
| 84 | #define RCANFD_GERFL_EEF1 BIT(17) | 84 | #define RCANFD_GERFL_EEF(ch) BIT(16 + (ch)) |
| 85 | #define RCANFD_GERFL_EEF0 BIT(16) | ||
| 86 | #define RCANFD_GERFL_CMPOF BIT(3) /* CAN FD only */ | 85 | #define RCANFD_GERFL_CMPOF BIT(3) /* CAN FD only */ |
| 87 | #define RCANFD_GERFL_THLES BIT(2) | 86 | #define RCANFD_GERFL_THLES BIT(2) |
| 88 | #define RCANFD_GERFL_MES BIT(1) | 87 | #define RCANFD_GERFL_MES BIT(1) |
| @@ -90,7 +89,7 @@ enum rcanfd_chip_id { · 1 unmodified line | |||
| 90 | 89 | ||
| 91 | #define RCANFD_GERFL_ERR(gpriv, x) \ | 90 | #define RCANFD_GERFL_ERR(gpriv, x) \ |
| 92 | ((x) & (reg_v3u(gpriv, RCANFD_GERFL_EEF0_7, \ | 91 | ((x) & (reg_v3u(gpriv, RCANFD_GERFL_EEF0_7, \ |
| 93 | RCANFD_GERFL_EEF0 | RCANFD_GERFL_EEF1) | \ | 92 | RCANFD_GERFL_EEF(0) | RCANFD_GERFL_EEF(1)) | \ |
| 94 | RCANFD_GERFL_MES | \ | 93 | RCANFD_GERFL_MES | \ |
| 95 | ((gpriv)->fdmode ? RCANFD_GERFL_CMPOF : 0))) | 94 | ((gpriv)->fdmode ? RCANFD_GERFL_CMPOF : 0))) |
| 96 | 95 | ||
| @@ -936,12 +935,8 @@ static void rcar_canfd_global_error(struct net_device *ndev) · 839 unmodified lines | |||
| 936 | u32 ridx = ch + RCANFD_RFFIFO_IDX; | 935 | u32 ridx = ch + RCANFD_RFFIFO_IDX; |
| 937 | 936 | ||
| 938 | gerfl = rcar_canfd_read(priv->base, RCANFD_GERFL); | 937 | gerfl = rcar_canfd_read(priv->base, RCANFD_GERFL); |
| 939 | if ((gerfl & RCANFD_GERFL_EEF0) && (ch == 0)) { | 938 | if (gerfl & RCANFD_GERFL_EEF(ch)) { |
| 940 | netdev_dbg(ndev, "Ch0: ECC Error flag\n"); | 939 | netdev_dbg(ndev, "Ch%u: ECC Error flag\n", ch); |
| 941 | stats->tx_dropped++; | ||
| 942 | } | ||
| 943 | if ((gerfl & RCANFD_GERFL_EEF1) && (ch == 1)) { | ||
| 944 | netdev_dbg(ndev, "Ch1: ECC Error flag\n"); | ||
| 945 | stats->tx_dropped++; | 940 | stats->tx_dropped++; |
| 946 | } | 941 | } |
| 947 | if (gerfl & RCANFD_GERFL_MES) { | 942 | if (gerfl & RCANFD_GERFL_MES) { |
| @@ -1481,7 +1476,7 @@ static netdev_tx_t rcar_canfd_start_xmit(struct sk_buff *skb, · 533 unmodified lines | |||
| 1481 | unsigned long flags; | 1476 | unsigned long flags; |
| 1482 | u32 ch = priv->channel; | 1477 | u32 ch = priv->channel; |
| 1483 | 1478 | ||
| 1484 | if (can_dropped_invalid_skb(ndev, skb)) | 1479 | if (can_dev_dropped_skb(ndev, skb)) |
| 1485 | return NETDEV_TX_OK; | 1480 | return NETDEV_TX_OK; |
| 1486 | 1481 | ||
| 1487 | if (cf->can_id & CAN_EFF_FLAG) { | 1482 | if (cf->can_id & CAN_EFF_FLAG) { |
| @@ -291,7 +291,7 @@ static netdev_tx_t sja1000_start_xmit(struct sk_buff *skb, · 290 unmodified lines | |||
| 291 | u8 cmd_reg_val = 0x00; | 291 | u8 cmd_reg_val = 0x00; |
| 292 | int i; | 292 | int i; |
| 293 | 293 | ||
| 294 | if (can_dropped_invalid_skb(dev, skb)) | 294 | if (can_dev_dropped_skb(dev, skb)) |
| 295 | return NETDEV_TX_OK; | 295 | return NETDEV_TX_OK; |
| 296 | 296 | ||
| 297 | netif_stop_queue(dev); | 297 | netif_stop_queue(dev); |
| @@ -594,7 +594,7 @@ static netdev_tx_t slcan_netdev_xmit(struct sk_buff *skb, · 593 unmodified lines | |||
| 594 | { | 594 | { |
| 595 | struct slcan *sl = netdev_priv(dev); | 595 | struct slcan *sl = netdev_priv(dev); |
| 596 | 596 | ||
| 597 | if (can_dropped_invalid_skb(dev, skb)) | 597 | if (can_dev_dropped_skb(dev, skb)) |
| 598 | return NETDEV_TX_OK; | 598 | return NETDEV_TX_OK; |
| 599 | 599 | ||
| 600 | spin_lock(&sl->lock); | 600 | spin_lock(&sl->lock); |
| @@ -60,7 +60,7 @@ static netdev_tx_t softing_netdev_start_xmit(struct sk_buff *skb, · 59 unmodified lines | |||
| 60 | struct can_frame *cf = (struct can_frame *)skb->data; | 60 | struct can_frame *cf = (struct can_frame *)skb->data; |
| 61 | uint8_t buf[DPRAM_TX_SIZE]; | 61 | uint8_t buf[DPRAM_TX_SIZE]; |
| 62 | 62 | ||
| 63 | if (can_dropped_invalid_skb(dev, skb)) | 63 | if (can_dev_dropped_skb(dev, skb)) |
| 64 | return NETDEV_TX_OK; | 64 | return NETDEV_TX_OK; |
| 65 | 65 | ||
| 66 | spin_lock(&card->spin); | 66 | spin_lock(&card->spin); |
| @@ -373,7 +373,7 @@ static netdev_tx_t hi3110_hard_start_xmit(struct sk_buff *skb, · 372 unmodified lines | |||
| 373 | return NETDEV_TX_BUSY; | 373 | return NETDEV_TX_BUSY; |
| 374 | } | 374 | } |
| 375 | 375 | ||
| 376 | if (can_dropped_invalid_skb(net, skb)) | 376 | if (can_dev_dropped_skb(net, skb)) |
| 377 | return NETDEV_TX_OK; | 377 | return NETDEV_TX_OK; |
| 378 | 378 | ||
| 379 | netif_stop_queue(net); | 379 | netif_stop_queue(net); |
| @@ -789,7 +789,7 @@ static netdev_tx_t mcp251x_hard_start_xmit(struct sk_buff *skb, · 788 unmodified lines | |||
| 789 | return NETDEV_TX_BUSY; | 789 | return NETDEV_TX_BUSY; |
| 790 | } | 790 | } |
| 791 | 791 | ||
| 792 | if (can_dropped_invalid_skb(net, skb)) | 792 | if (can_dev_dropped_skb(net, skb)) |
| 793 | return NETDEV_TX_OK; | 793 | return NETDEV_TX_OK; |
| 794 | 794 | ||
| 795 | netif_stop_queue(net); | 795 | netif_stop_queue(net); |
| @@ -172,7 +172,7 @@ netdev_tx_t mcp251xfd_start_xmit(struct sk_buff *skb, · 171 unmodified lines | |||
| 172 | u8 tx_head; | 172 | u8 tx_head; |
| 173 | int err; | 173 | int err; |
| 174 | 174 | ||
| 175 | if (can_dropped_invalid_skb(ndev, skb)) | 175 | if (can_dev_dropped_skb(ndev, skb)) |
| 176 | return NETDEV_TX_OK; | 176 | return NETDEV_TX_OK; |
| 177 | 177 | ||
| 178 | if (mcp251xfd_tx_busy(priv, tx_ring)) | 178 | if (mcp251xfd_tx_busy(priv, tx_ring)) |
| @@ -429,7 +429,7 @@ static netdev_tx_t sun4ican_start_xmit(struct sk_buff *skb, struct net_device *d · 428 unmodified lines | |||
| 429 | canid_t id; | 429 | canid_t id; |
| 430 | int i; | 430 | int i; |
| 431 | 431 | ||
| 432 | if (can_dropped_invalid_skb(dev, skb)) | 432 | if (can_dev_dropped_skb(dev, skb)) |
| 433 | return NETDEV_TX_OK; | 433 | return NETDEV_TX_OK; |
| 434 | 434 | ||
| 435 | netif_stop_queue(dev); | 435 | netif_stop_queue(dev); |
| @@ -470,7 +470,7 @@ static netdev_tx_t ti_hecc_xmit(struct sk_buff *skb, struct net_device *ndev) · 469 unmodified lines | |||
| 470 | u32 mbxno, mbx_mask, data; | 470 | u32 mbxno, mbx_mask, data; |
| 471 | unsigned long flags; | 471 | unsigned long flags; |
| 472 | 472 | ||
| 473 | if (can_dropped_invalid_skb(ndev, skb)) | 473 | if (can_dev_dropped_skb(ndev, skb)) |
| 474 | return NETDEV_TX_OK; | 474 | return NETDEV_TX_OK; |
| 475 | 475 | ||
| 476 | mbxno = get_tx_head_mb(priv); | 476 | mbxno = get_tx_head_mb(priv); |
| @@ -747,7 +747,7 @@ static netdev_tx_t ems_usb_start_xmit(struct sk_buff *skb, struct net_device *ne · 746 unmodified lines | |||
| 747 | size_t size = CPC_HEADER_SIZE + CPC_MSG_HEADER_LEN | 747 | size_t size = CPC_HEADER_SIZE + CPC_MSG_HEADER_LEN |
| 748 | + sizeof(struct cpc_can_msg); | 748 | + sizeof(struct cpc_can_msg); |
| 749 | 749 | ||
| 750 | if (can_dropped_invalid_skb(netdev, skb)) | 750 | if (can_dev_dropped_skb(netdev, skb)) |
| 751 | return NETDEV_TX_OK; | 751 | return NETDEV_TX_OK; |
| 752 | 752 | ||
| 753 | /* create a URB, and a buffer for it, and copy the data to the URB */ | 753 | /* create a URB, and a buffer for it, and copy the data to the URB */ |
| @@ -725,7 +725,7 @@ static netdev_tx_t esd_usb_start_xmit(struct sk_buff *skb, · 724 unmodified lines | |||
| 725 | int ret = NETDEV_TX_OK; | 725 | int ret = NETDEV_TX_OK; |
| 726 | size_t size = sizeof(struct esd_usb_msg); | 726 | size_t size = sizeof(struct esd_usb_msg); |
| 727 | 727 | ||
| 728 | if (can_dropped_invalid_skb(netdev, skb)) | 728 | if (can_dev_dropped_skb(netdev, skb)) |
| 729 | return NETDEV_TX_OK; | 729 | return NETDEV_TX_OK; |
| 730 | 730 | ||
| 731 | /* create a URB, and a buffer for it, and copy the data to the URB */ | 731 | /* create a URB, and a buffer for it, and copy the data to the URB */ |
| @@ -1913,7 +1913,7 @@ static netdev_tx_t es58x_start_xmit(struct sk_buff *skb, · 1912 unmodified lines | |||
| 1913 | unsigned int frame_len; | 1913 | unsigned int frame_len; |
| 1914 | int ret; | 1914 | int ret; |
| 1915 | 1915 | ||
| 1916 | if (can_dropped_invalid_skb(netdev, skb)) { | 1916 | if (can_dev_dropped_skb(netdev, skb)) { |
| 1917 | if (priv->tx_urb) | 1917 | if (priv->tx_urb) |
| 1918 | goto xmit_commit; | 1918 | goto xmit_commit; |
| 1919 | return NETDEV_TX_OK; | 1919 | return NETDEV_TX_OK; |
| @@ -723,7 +723,7 @@ static netdev_tx_t gs_can_start_xmit(struct sk_buff *skb, · 722 unmodified lines | |||
| 723 | unsigned int idx; | 723 | unsigned int idx; |
| 724 | struct gs_tx_context *txc; | 724 | struct gs_tx_context *txc; |
| 725 | 725 | ||
| 726 | if (can_dropped_invalid_skb(netdev, skb)) | 726 | if (can_dev_dropped_skb(netdev, skb)) |
| 727 | return NETDEV_TX_OK; | 727 | return NETDEV_TX_OK; |
| 728 | 728 | ||
| 729 | /* find an empty context to keep track of transmission */ | 729 | /* find an empty context to keep track of transmission */ |
| @@ -570,7 +570,7 @@ static netdev_tx_t kvaser_usb_start_xmit(struct sk_buff *skb, · 569 unmodified lines | |||
| 570 | unsigned int i; | 570 | unsigned int i; |
| 571 | unsigned long flags; | 571 | unsigned long flags; |
| 572 | 572 | ||
| 573 | if (can_dropped_invalid_skb(netdev, skb)) | 573 | if (can_dev_dropped_skb(netdev, skb)) |
| 574 | return NETDEV_TX_OK; | 574 | return NETDEV_TX_OK; |
| 575 | 575 | ||
| 576 | urb = usb_alloc_urb(0, GFP_ATOMIC); | 576 | urb = usb_alloc_urb(0, GFP_ATOMIC); |
| @@ -311,7 +311,7 @@ static netdev_tx_t mcba_usb_start_xmit(struct sk_buff *skb, · 310 unmodified lines | |||
| 311 | .cmd_id = MBCA_CMD_TRANSMIT_MESSAGE_EV | 311 | .cmd_id = MBCA_CMD_TRANSMIT_MESSAGE_EV |
| 312 | }; | 312 | }; |
| 313 | 313 | ||
| 314 | if (can_dropped_invalid_skb(netdev, skb)) | 314 | if (can_dev_dropped_skb(netdev, skb)) |
| 315 | return NETDEV_TX_OK; | 315 | return NETDEV_TX_OK; |
| 316 | 316 | ||
| 317 | ctx = mcba_usb_get_free_ctx(priv, cf); | 317 | ctx = mcba_usb_get_free_ctx(priv, cf); |
| @@ -351,7 +351,7 @@ static netdev_tx_t peak_usb_ndo_start_xmit(struct sk_buff *skb, · 350 unmodified lines | |||
| 351 | int i, err; | 351 | int i, err; |
| 352 | size_t size = dev->adapter->tx_buffer_size; | 352 | size_t size = dev->adapter->tx_buffer_size; |
| 353 | 353 | ||
| 354 | if (can_dropped_invalid_skb(netdev, skb)) | 354 | if (can_dev_dropped_skb(netdev, skb)) |
| 355 | return NETDEV_TX_OK; | 355 | return NETDEV_TX_OK; |
| 356 | 356 | ||
| 357 | for (i = 0; i < PCAN_USB_MAX_TX_URBS; i++) | 357 | for (i = 0; i < PCAN_USB_MAX_TX_URBS; i++) |
| @@ -1120,7 +1120,7 @@ static netdev_tx_t ucan_start_xmit(struct sk_buff *skb, · 1119 unmodified lines | |||
| 1120 | struct can_frame *cf = (struct can_frame *)skb->data; | 1120 | struct can_frame *cf = (struct can_frame *)skb->data; |
| 1121 | 1121 | ||
| 1122 | /* check skb */ | 1122 | /* check skb */ |
| 1123 | if (can_dropped_invalid_skb(netdev, skb)) | 1123 | if (can_dev_dropped_skb(netdev, skb)) |
| 1124 | return NETDEV_TX_OK; | 1124 | return NETDEV_TX_OK; |
| 1125 | 1125 | ||
| 1126 | /* allocate a context and slow down tx path, if fifo state is low */ | 1126 | /* allocate a context and slow down tx path, if fifo state is low */ |
| @@ -602,7 +602,7 @@ static netdev_tx_t usb_8dev_start_xmit(struct sk_buff *skb, · 601 unmodified lines | |||
| 602 | int i, err; | 602 | int i, err; |
| 603 | size_t size = sizeof(struct usb_8dev_tx_msg); | 603 | size_t size = sizeof(struct usb_8dev_tx_msg); |
| 604 | 604 | ||
| 605 | if (can_dropped_invalid_skb(netdev, skb)) | 605 | if (can_dev_dropped_skb(netdev, skb)) |
| 606 | return NETDEV_TX_OK; | 606 | return NETDEV_TX_OK; |
| 607 | 607 | ||
| 608 | /* create a URB, and a buffer for it, and copy the data to the URB */ | 608 | /* create a URB, and a buffer for it, and copy the data to the URB */ |
| @@ -743,7 +743,7 @@ static netdev_tx_t xcan_start_xmit(struct sk_buff *skb, struct net_device *ndev) · 742 unmodified lines | |||
| 743 | struct xcan_priv *priv = netdev_priv(ndev); | 743 | struct xcan_priv *priv = netdev_priv(ndev); |
| 744 | int ret; | 744 | int ret; |
| 745 | 745 | ||
| 746 | if (can_dropped_invalid_skb(ndev, skb)) | 746 | if (can_dev_dropped_skb(ndev, skb)) |
| 747 | return NETDEV_TX_OK; | 747 | return NETDEV_TX_OK; |
| 748 | 748 | ||
| 749 | if (priv->devtype.flags & XCAN_FLAG_TX_MAILBOXES) | 749 | if (priv->devtype.flags & XCAN_FLAG_TX_MAILBOXES) |
| @@ -1004,8 +1004,10 @@ static int xgene_enet_open(struct net_device *ndev) · 1003 unmodified lines | |||
| 1004 | 1004 | ||
| 1005 | xgene_enet_napi_enable(pdata); | 1005 | xgene_enet_napi_enable(pdata); |
| 1006 | ret = xgene_enet_register_irq(ndev); | 1006 | ret = xgene_enet_register_irq(ndev); |
| 1007 | if (ret) | 1007 | if (ret) { |
| 1008 | xgene_enet_napi_disable(pdata); | ||
| 1008 | return ret; | 1009 | return ret; |
| 1010 | } | ||
| 1009 | 1011 | ||
| 1010 | if (ndev->phydev) { | 1012 | if (ndev->phydev) { |
| 1011 | phy_start(ndev->phydev); | 1013 | phy_start(ndev->phydev); |
| @@ -570,6 +570,7 @@ static int aq_update_txsa(struct aq_nic_s *nic, const unsigned int sc_idx, · 569 unmodified lines | |||
| 570 | 570 | ||
| 571 | ret = aq_mss_set_egress_sakey_record(hw, &key_rec, sa_idx); | 571 | ret = aq_mss_set_egress_sakey_record(hw, &key_rec, sa_idx); |
| 572 | 572 | ||
| 573 | memzero_explicit(&key_rec, sizeof(key_rec)); | ||
| 573 | return ret; | 574 | return ret; |
| 574 | } | 575 | } |
| 575 | 576 | ||
| @@ -899,6 +900,7 @@ static int aq_update_rxsa(struct aq_nic_s *nic, const unsigned int sc_idx, · 323 unmodified lines | |||
| 899 | 900 | ||
| 900 | ret = aq_mss_set_ingress_sakey_record(hw, &sa_key_record, sa_idx); | 901 | ret = aq_mss_set_ingress_sakey_record(hw, &sa_key_record, sa_idx); |
| 901 | 902 | ||
| 903 | memzero_explicit(&sa_key_record, sizeof(sa_key_record)); | ||
| 902 | return ret; | 904 | return ret; |
| 903 | } | 905 | } |
| 904 | 906 | ||
| @@ -757,6 +757,7 @@ set_ingress_sakey_record(struct aq_hw_s *hw, · 756 unmodified lines | |||
| 757 | u16 table_index) | 757 | u16 table_index) |
| 758 | { | 758 | { |
| 759 | u16 packed_record[18]; | 759 | u16 packed_record[18]; |
| 760 | int ret; | ||
| 760 | 761 | ||
| 761 | if (table_index >= NUMROWS_INGRESSSAKEYRECORD) | 762 | if (table_index >= NUMROWS_INGRESSSAKEYRECORD) |
| 762 | return -EINVAL; | 763 | return -EINVAL; |
| @@ -789,9 +790,12 @@ set_ingress_sakey_record(struct aq_hw_s *hw, · 26 unmodified lines | |||
| 789 | 790 | ||
| 790 | packed_record[16] = rec->key_len & 0x3; | 791 | packed_record[16] = rec->key_len & 0x3; |
| 791 | 792 | ||
| 792 | return set_raw_ingress_record(hw, packed_record, 18, 2, | 793 | ret = set_raw_ingress_record(hw, packed_record, 18, 2, |
| 793 | ROWOFFSET_INGRESSSAKEYRECORD + | 794 | ROWOFFSET_INGRESSSAKEYRECORD + |
| 794 | table_index); | 795 | table_index); |
| 796 | |||
| 797 | memzero_explicit(packed_record, sizeof(packed_record)); | ||
| 798 | return ret; | ||
| 795 | } | 799 | } |
| 796 | 800 | ||
| 797 | int aq_mss_set_ingress_sakey_record(struct aq_hw_s *hw, | 801 | 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 | |||
| 1739 | ret = set_raw_egress_record(hw, packed_record, 8, 2, | 1743 | ret = set_raw_egress_record(hw, packed_record, 8, 2, |
| 1740 | ROWOFFSET_EGRESSSAKEYRECORD + table_index); | 1744 | ROWOFFSET_EGRESSSAKEYRECORD + table_index); |
| 1741 | if (unlikely(ret)) | 1745 | if (unlikely(ret)) |
| 1742 | return ret; | 1746 | goto clear_key; |
| 1743 | ret = set_raw_egress_record(hw, packed_record + 8, 8, 2, | 1747 | ret = set_raw_egress_record(hw, packed_record + 8, 8, 2, |
| 1744 | ROWOFFSET_EGRESSSAKEYRECORD + table_index - | 1748 | ROWOFFSET_EGRESSSAKEYRECORD + table_index - |
| 1745 | 32); | 1749 | 32); |
| 1746 | if (unlikely(ret)) | ||
| 1747 | return ret; | ||
| 1748 | 1750 | ||
| 1749 | return 0; | 1751 | clear_key: |
| 1752 | memzero_explicit(packed_record, sizeof(packed_record)); | ||
| 1753 | return ret; | ||
| 1750 | } | 1754 | } |
| 1751 | 1755 | ||
| 1752 | int aq_mss_set_egress_sakey_record(struct aq_hw_s *hw, | 1756 | int aq_mss_set_egress_sakey_record(struct aq_hw_s *hw, |
| @@ -77,7 +77,7 @@ config BCMGENET · 76 unmodified lines | |||
| 77 | select BCM7XXX_PHY | 77 | select BCM7XXX_PHY |
| 78 | select MDIO_BCM_UNIMAC | 78 | select MDIO_BCM_UNIMAC |
| 79 | select DIMLIB | 79 | select DIMLIB |
| 80 | select BROADCOM_PHY if ARCH_BCM2835 | 80 | select BROADCOM_PHY if (ARCH_BCM2835 && PTP_1588_CLOCK_OPTIONAL) |
| 81 | help | 81 | help |
| 82 | This driver supports the built-in Ethernet MACs found in the | 82 | This driver supports the built-in Ethernet MACs found in the |
| 83 | Broadcom BCM7xxx Set Top Box family chipset. | 83 | Broadcom BCM7xxx Set Top Box family chipset. |
| @@ -9983,17 +9983,12 @@ static int bnxt_try_recover_fw(struct bnxt *bp) · 9982 unmodified lines | |||
| 9983 | return -ENODEV; | 9983 | return -ENODEV; |
| 9984 | } | 9984 | } |
| 9985 | 9985 | ||
| 9986 | int bnxt_cancel_reservations(struct bnxt *bp, bool fw_reset) | 9986 | static void bnxt_clear_reservations(struct bnxt *bp, bool fw_reset) |
| 9987 | { | 9987 | { |
| 9988 | struct bnxt_hw_resc *hw_resc = &bp->hw_resc; | 9988 | struct bnxt_hw_resc *hw_resc = &bp->hw_resc; |
| 9989 | int rc; | ||
| 9990 | 9989 | ||
| 9991 | if (!BNXT_NEW_RM(bp)) | 9990 | if (!BNXT_NEW_RM(bp)) |
| 9992 | return 0; /* no resource reservations required */ | 9991 | return; /* no resource reservations required */ |
| 9993 | |||
| 9994 | rc = bnxt_hwrm_func_resc_qcaps(bp, true); | ||
| 9995 | if (rc) | ||
| 9996 | netdev_err(bp->dev, "resc_qcaps failed\n"); | ||
| 9997 | 9992 | ||
| 9998 | hw_resc->resv_cp_rings = 0; | 9993 | hw_resc->resv_cp_rings = 0; |
| 9999 | hw_resc->resv_stat_ctxs = 0; | 9994 | hw_resc->resv_stat_ctxs = 0; |
| @@ -10006,6 +10001,20 @@ int bnxt_cancel_reservations(struct bnxt *bp, bool fw_reset) · 6 unmodified lines | |||
| 10006 | bp->tx_nr_rings = 0; | 10001 | bp->tx_nr_rings = 0; |
| 10007 | bp->rx_nr_rings = 0; | 10002 | bp->rx_nr_rings = 0; |
| 10008 | } | 10003 | } |
| 10004 | } | ||
| 10005 | |||
| 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); | ||
| 10009 | 10018 | ||
| 10010 | return rc; | 10019 | return rc; |
| 10011 | } | 10020 | } |
| @@ -12894,8 +12903,8 @@ static int bnxt_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb, · 2882 unmodified lines | |||
| 12894 | rcu_read_lock(); | 12903 | rcu_read_lock(); |
| 12895 | hlist_for_each_entry_rcu(fltr, head, hash) { | 12904 | hlist_for_each_entry_rcu(fltr, head, hash) { |
| 12896 | if (bnxt_fltr_match(fltr, new_fltr)) { | 12905 | if (bnxt_fltr_match(fltr, new_fltr)) { |
| 12906 | rc = fltr->sw_id; | ||
| 12897 | rcu_read_unlock(); | 12907 | rcu_read_unlock(); |
| 12898 | rc = 0; | ||
| 12899 | goto err_free; | 12908 | goto err_free; |
| 12900 | } | 12909 | } |
| 12901 | } | 12910 | } |
| @@ -13913,7 +13922,9 @@ static pci_ers_result_t bnxt_io_slot_reset(struct pci_dev *pdev) · 1011 unmodified lines | |||
| 13913 | pci_ers_result_t result = PCI_ERS_RESULT_DISCONNECT; | 13922 | pci_ers_result_t result = PCI_ERS_RESULT_DISCONNECT; |
| 13914 | struct net_device *netdev = pci_get_drvdata(pdev); | 13923 | struct net_device *netdev = pci_get_drvdata(pdev); |
| 13915 | struct bnxt *bp = netdev_priv(netdev); | 13924 | struct bnxt *bp = netdev_priv(netdev); |
| 13916 | int err = 0, off; | 13925 | int retry = 0; |
| 13926 | int err = 0; | ||
| 13927 | int off; | ||
| 13917 | 13928 | ||
| 13918 | netdev_info(bp->dev, "PCI Slot Reset\n"); | 13929 | netdev_info(bp->dev, "PCI Slot Reset\n"); |
| 13919 | 13930 | ||
| @@ -13941,11 +13952,36 @@ static pci_ers_result_t bnxt_io_slot_reset(struct pci_dev *pdev) · 21 unmodified lines | |||
| 13941 | pci_restore_state(pdev); | 13952 | pci_restore_state(pdev); |
| 13942 | pci_save_state(pdev); | 13953 | pci_save_state(pdev); |
| 13943 | 13954 | ||
| 13955 | bnxt_inv_fw_health_reg(bp); | ||
| 13956 | bnxt_try_map_fw_health_reg(bp); | ||
| 13957 | |||
| 13958 | /* In some PCIe AER scenarios, firmware may take up to | ||
| 13959 | * 10 seconds to become ready in the worst case. | ||
| 13960 | */ | ||
| 13961 | do { | ||
| 13962 | err = bnxt_try_recover_fw(bp); | ||
| 13963 | if (!err) | ||
| 13964 | break; | ||
| 13965 | retry++; | ||
| 13966 | } while (retry < BNXT_FW_SLOT_RESET_RETRY); | ||
| 13967 | |||
| 13968 | if (err) { | ||
| 13969 | dev_err(&pdev->dev, "Firmware not ready\n"); | ||
| 13970 | goto reset_exit; | ||
| 13971 | } | ||
| 13972 | |||
| 13944 | err = bnxt_hwrm_func_reset(bp); | 13973 | err = bnxt_hwrm_func_reset(bp); |
| 13945 | if (!err) | 13974 | if (!err) |
| 13946 | result = PCI_ERS_RESULT_RECOVERED; | 13975 | result = PCI_ERS_RESULT_RECOVERED; |
| 13976 | |||
| 13977 | bnxt_ulp_irq_stop(bp); | ||
| 13978 | bnxt_clear_int_mode(bp); | ||
| 13979 | err = bnxt_init_int_mode(bp); | ||
| 13980 | bnxt_ulp_irq_restart(bp, err); | ||
| 13947 | } | 13981 | } |
| 13948 | 13982 | ||
| 13983 | reset_exit: | ||
| 13984 | bnxt_clear_reservations(bp, true); | ||
| 13949 | rtnl_unlock(); | 13985 | rtnl_unlock(); |
| 13950 | 13986 | ||
| 13951 | return result; | 13987 | return result; |
| @@ -1621,6 +1621,7 @@ struct bnxt_fw_health { · 1620 unmodified lines | |||
| 1621 | 1621 | ||
| 1622 | #define BNXT_FW_RETRY 5 | 1622 | #define BNXT_FW_RETRY 5 |
| 1623 | #define BNXT_FW_IF_RETRY 10 | 1623 | #define BNXT_FW_IF_RETRY 10 |
| 1624 | #define BNXT_FW_SLOT_RESET_RETRY 4 | ||
| 1624 | 1625 | ||
| 1625 | enum board_idx { | 1626 | enum board_idx { |
| 1626 | BCM57301, | 1627 | BCM57301, |
| @@ -162,7 +162,7 @@ static int bnxt_set_coalesce(struct net_device *dev, · 161 unmodified lines | |||
| 162 | } | 162 | } |
| 163 | 163 | ||
| 164 | reset_coalesce: | 164 | reset_coalesce: |
| 165 | if (netif_running(dev)) { | 165 | if (test_bit(BNXT_STATE_OPEN, &bp->state)) { |
| 166 | if (update_stats) { | 166 | if (update_stats) { |
| 167 | rc = bnxt_close_nic(bp, true, false); | 167 | rc = bnxt_close_nic(bp, true, false); |
| 168 | if (!rc) | 168 | if (!rc) |
| @@ -476,7 +476,8 @@ static int __hwrm_send(struct bnxt *bp, struct bnxt_hwrm_ctx *ctx) · 475 unmodified lines | |||
| 476 | memset(ctx->resp, 0, PAGE_SIZE); | 476 | memset(ctx->resp, 0, PAGE_SIZE); |
| 477 | 477 | ||
| 478 | req_type = le16_to_cpu(ctx->req->req_type); | 478 | req_type = le16_to_cpu(ctx->req->req_type); |
| 479 | if (BNXT_NO_FW_ACCESS(bp) && req_type != HWRM_FUNC_RESET) { | 479 | if (BNXT_NO_FW_ACCESS(bp) && |
| 480 | (req_type != HWRM_FUNC_RESET && req_type != HWRM_VER_GET)) { | ||
| 480 | netdev_dbg(bp->dev, "hwrm req_type 0x%x skipped, FW channel down\n", | 481 | netdev_dbg(bp->dev, "hwrm req_type 0x%x skipped, FW channel down\n", |
| 481 | req_type); | 482 | req_type); |
| 482 | goto exit; | 483 | goto exit; |
| @@ -1301,6 +1301,7 @@ static int cxgb_up(struct adapter *adap) · 1300 unmodified lines | |||
| 1301 | if (ret < 0) { | 1301 | if (ret < 0) { |
| 1302 | CH_ERR(adap, "failed to bind qsets, err %d\n", ret); | 1302 | CH_ERR(adap, "failed to bind qsets, err %d\n", ret); |
| 1303 | t3_intr_disable(adap); | 1303 | t3_intr_disable(adap); |
| 1304 | quiesce_rx(adap); | ||
| 1304 | free_irq_resources(adap); | 1305 | free_irq_resources(adap); |
| 1305 | err = ret; | 1306 | err = ret; |
| 1306 | goto out; | 1307 | goto out; |
| @@ -858,7 +858,7 @@ static int cxgb4vf_open(struct net_device *dev) · 857 unmodified lines | |||
| 858 | */ | 858 | */ |
| 859 | err = t4vf_update_port_info(pi); | 859 | err = t4vf_update_port_info(pi); |
| 860 | if (err < 0) | 860 | if (err < 0) |
| 861 | return err; | 861 | goto err_unwind; |
| 862 | 862 | ||
| 863 | /* | 863 | /* |
| 864 | * Note that this interface is up and start everything up ... | 864 | * Note that this interface is up and start everything up ... |
| @@ -487,12 +487,21 @@ _return_of_node_put: · 486 unmodified lines | |||
| 487 | return err; | 487 | return err; |
| 488 | } | 488 | } |
| 489 | 489 | ||
| 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 | |||
| 490 | static struct platform_driver mac_driver = { | 498 | static struct platform_driver mac_driver = { |
| 491 | .driver = { | 499 | .driver = { |
| 492 | .name = KBUILD_MODNAME, | 500 | .name = KBUILD_MODNAME, |
| 493 | .of_match_table = mac_match, | 501 | .of_match_table = mac_match, |
| 494 | }, | 502 | }, |
| 495 | .probe = mac_probe, | 503 | .probe = mac_probe, |
| 504 | .remove = mac_remove, | ||
| 496 | }; | 505 | }; |
| 497 | 506 | ||
| 498 | builtin_platform_driver(mac_driver); | 507 | builtin_platform_driver(mac_driver); |
| @@ -12984,14 +12984,16 @@ static void hclge_clean_vport_config(struct hnae3_ae_dev *ae_dev, int num_vfs) · 12983 unmodified lines | |||
| 12984 | static int hclge_get_dscp_prio(struct hnae3_handle *h, u8 dscp, u8 *tc_mode, | 12984 | static int hclge_get_dscp_prio(struct hnae3_handle *h, u8 dscp, u8 *tc_mode, |
| 12985 | u8 *priority) | 12985 | u8 *priority) |
| 12986 | { | 12986 | { |
| 12987 | struct hclge_vport *vport = hclge_get_vport(h); | ||
| 12988 | |||
| 12987 | if (dscp >= HNAE3_MAX_DSCP) | 12989 | if (dscp >= HNAE3_MAX_DSCP) |
| 12988 | return -EINVAL; | 12990 | return -EINVAL; |
| 12989 | 12991 | ||
| 12990 | if (tc_mode) | 12992 | if (tc_mode) |
| 12991 | *tc_mode = h->kinfo.tc_map_mode; | 12993 | *tc_mode = vport->nic.kinfo.tc_map_mode; |
| 12992 | if (priority) | 12994 | if (priority) |
| 12993 | *priority = h->kinfo.dscp_prio[dscp] == HNAE3_PRIO_ID_INVALID ? 0 : | 12995 | *priority = vport->nic.kinfo.dscp_prio[dscp] == HNAE3_PRIO_ID_INVALID ? 0 : |
| 12994 | h->kinfo.dscp_prio[dscp]; | 12996 | vport->nic.kinfo.dscp_prio[dscp]; |
| 12995 | 12997 | ||
| 12996 | return 0; | 12998 | return 0; |
| 12997 | } | 12999 | } |
| @@ -1757,7 +1757,8 @@ static int ibmveth_probe(struct vio_dev *dev, const struct vio_device_id *id) · 1756 unmodified lines | |||
| 1757 | kobject_uevent(kobj, KOBJ_ADD); | 1757 | kobject_uevent(kobj, KOBJ_ADD); |
| 1758 | } | 1758 | } |
| 1759 | 1759 | ||
| 1760 | rc = netif_set_real_num_tx_queues(netdev, ibmveth_real_max_tx_queues()); | 1760 | rc = netif_set_real_num_tx_queues(netdev, min(num_online_cpus(), |
| 1761 | IBMVETH_DEFAULT_QUEUES)); | ||
| 1761 | if (rc) { | 1762 | if (rc) { |
| 1762 | netdev_dbg(netdev, "failed to set number of tx queues rc=%d\n", | 1763 | netdev_dbg(netdev, "failed to set number of tx queues rc=%d\n", |
| 1763 | rc); | 1764 | rc); |
| @@ -100,6 +100,7 @@ static inline long h_illan_attributes(unsigned long unit_address, · 99 unmodified lines | |||
| 100 | #define IBMVETH_MAX_BUF_SIZE (1024 * 128) | 100 | #define IBMVETH_MAX_BUF_SIZE (1024 * 128) |
| 101 | #define IBMVETH_MAX_TX_BUF_SIZE (1024 * 64) | 101 | #define IBMVETH_MAX_TX_BUF_SIZE (1024 * 64) |
| 102 | #define IBMVETH_MAX_QUEUES 16U | 102 | #define IBMVETH_MAX_QUEUES 16U |
| 103 | #define IBMVETH_DEFAULT_QUEUES 8U | ||
| 103 | 104 | ||
| 104 | static int pool_size[] = { 512, 1024 * 2, 1024 * 16, 1024 * 32, 1024 * 64 }; | 105 | static int pool_size[] = { 512, 1024 * 2, 1024 * 16, 1024 * 32, 1024 * 64 }; |
| 105 | static int pool_count[] = { 256, 512, 256, 256, 256 }; | 106 | static int pool_count[] = { 256, 512, 256, 256, 256 }; |
| @@ -2438,6 +2438,8 @@ void iavf_virtchnl_completion(struct iavf_adapter *adapter, · 2437 unmodified lines | |||
| 2438 | list_for_each_entry(f, &adapter->vlan_filter_list, list) { | 2438 | list_for_each_entry(f, &adapter->vlan_filter_list, list) { |
| 2439 | if (f->is_new_vlan) { | 2439 | if (f->is_new_vlan) { |
| 2440 | f->is_new_vlan = false; | 2440 | f->is_new_vlan = false; |
| 2441 | if (!f->vlan.vid) | ||
| 2442 | continue; | ||
| 2441 | if (f->vlan.tpid == ETH_P_8021Q) | 2443 | if (f->vlan.tpid == ETH_P_8021Q) |
| 2442 | set_bit(f->vlan.vid, | 2444 | set_bit(f->vlan.vid, |
| 2443 | adapter->vsi.active_cvlans); | 2445 | adapter->vsi.active_cvlans); |
| @@ -958,7 +958,7 @@ ice_vsi_stop_tx_ring(struct ice_vsi *vsi, enum ice_disq_rst_src rst_src, · 957 unmodified lines | |||
| 958 | * associated to the queue to schedule NAPI handler | 958 | * associated to the queue to schedule NAPI handler |
| 959 | */ | 959 | */ |
| 960 | q_vector = ring->q_vector; | 960 | q_vector = ring->q_vector; |
| 961 | if (q_vector) | 961 | if (q_vector && !(vsi->vf && ice_is_vf_disabled(vsi->vf))) |
| 962 | ice_trigger_sw_intr(hw, q_vector); | 962 | ice_trigger_sw_intr(hw, q_vector); |
| 963 | 963 | ||
| 964 | status = ice_dis_vsi_txq(vsi->port_info, txq_meta->vsi_idx, | 964 | status = ice_dis_vsi_txq(vsi->port_info, txq_meta->vsi_idx, |
| @@ -2239,6 +2239,31 @@ int ice_vsi_stop_xdp_tx_rings(struct ice_vsi *vsi) · 2238 unmodified lines | |||
| 2239 | return ice_vsi_stop_tx_rings(vsi, ICE_NO_RESET, 0, vsi->xdp_rings, vsi->num_xdp_txq); | 2239 | return ice_vsi_stop_tx_rings(vsi, ICE_NO_RESET, 0, vsi->xdp_rings, vsi->num_xdp_txq); |
| 2240 | } | 2240 | } |
| 2241 | 2241 | ||
| 2242 | /** | ||
| 2243 | * ice_vsi_is_rx_queue_active | ||
| 2244 | * @vsi: the VSI being configured | ||
| 2245 | * | ||
| 2246 | * Return true if at least one queue is active. | ||
| 2247 | */ | ||
| 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 | |||
| 2242 | /** | 2267 | /** |
| 2243 | * ice_vsi_is_vlan_pruning_ena - check if VLAN pruning is enabled or not | 2268 | * ice_vsi_is_vlan_pruning_ena - check if VLAN pruning is enabled or not |
| 2244 | * @vsi: VSI to check whether or not VLAN pruning is enabled. | 2269 | * @vsi: VSI to check whether or not VLAN pruning is enabled. |
| @@ -129,4 +129,5 @@ u16 ice_vsi_num_non_zero_vlans(struct ice_vsi *vsi); · 128 unmodified lines | |||
| 129 | bool ice_is_feature_supported(struct ice_pf *pf, enum ice_feature f); | 129 | bool ice_is_feature_supported(struct ice_pf *pf, enum ice_feature f); |
| 130 | void ice_clear_feature_support(struct ice_pf *pf, enum ice_feature f); | 130 | void ice_clear_feature_support(struct ice_pf *pf, enum ice_feature f); |
| 131 | void ice_init_feature_support(struct ice_pf *pf); | 131 | void ice_init_feature_support(struct ice_pf *pf); |
| 132 | bool ice_vsi_is_rx_queue_active(struct ice_vsi *vsi); | ||
| 132 | #endif /* !_ICE_LIB_H_ */ | 133 | #endif /* !_ICE_LIB_H_ */ |
| @@ -576,7 +576,10 @@ int ice_reset_vf(struct ice_vf *vf, u32 flags) · 575 unmodified lines | |||
| 576 | return -EINVAL; | 576 | return -EINVAL; |
| 577 | } | 577 | } |
| 578 | ice_vsi_stop_lan_tx_rings(vsi, ICE_NO_RESET, vf->vf_id); | 578 | ice_vsi_stop_lan_tx_rings(vsi, ICE_NO_RESET, vf->vf_id); |
| 579 | ice_vsi_stop_all_rx_rings(vsi); | 579 | |
| 580 | if (ice_vsi_is_rx_queue_active(vsi)) | ||
| 581 | ice_vsi_stop_all_rx_rings(vsi); | ||
| 582 | |||
| 580 | dev_dbg(dev, "VF is already disabled, there is no need for resetting it, telling VM, all is fine %d\n", | 583 | dev_dbg(dev, "VF is already disabled, there is no need for resetting it, telling VM, all is fine %d\n", |
| 581 | vf->vf_id); | 584 | vf->vf_id); |
| 582 | return 0; | 585 | return 0; |
| @@ -2481,6 +2481,7 @@ out_free: · 2480 unmodified lines | |||
| 2481 | for (i = 0; i < mp->rxq_count; i++) | 2481 | for (i = 0; i < mp->rxq_count; i++) |
| 2482 | rxq_deinit(mp->rxq + i); | 2482 | rxq_deinit(mp->rxq + i); |
| 2483 | out: | 2483 | out: |
| 2484 | napi_disable(&mp->napi); | ||
| 2484 | free_irq(dev->irq, dev); | 2485 | free_irq(dev->irq, dev); |
| 2485 | 2486 | ||
| 2486 | return err; | 2487 | return err; |
| @@ -32,10 +32,12 @@ config OCTEONTX2_PF · 31 unmodified lines | |||
| 32 | tristate "Marvell OcteonTX2 NIC Physical Function driver" | 32 | tristate "Marvell OcteonTX2 NIC Physical Function driver" |
| 33 | select OCTEONTX2_MBOX | 33 | select OCTEONTX2_MBOX |
| 34 | select NET_DEVLINK | 34 | select NET_DEVLINK |
| 35 | depends on MACSEC || !MACSEC | ||
| 35 | depends on (64BIT && COMPILE_TEST) || ARM64 | 36 | depends on (64BIT && COMPILE_TEST) || ARM64 |
| 36 | select DIMLIB | 37 | select DIMLIB |
| 37 | depends on PCI | 38 | depends on PCI |
| 38 | depends on PTP_1588_CLOCK_OPTIONAL | 39 | depends on PTP_1588_CLOCK_OPTIONAL |
| 40 | depends on MACSEC || !MACSEC | ||
| 39 | help | 41 | help |
| 40 | This driver supports Marvell's OcteonTX2 NIC physical function. | 42 | This driver supports Marvell's OcteonTX2 NIC physical function. |
| 41 | 43 | ||
| @@ -898,6 +898,7 @@ static int otx2_sq_init(struct otx2_nic *pfvf, u16 qidx, u16 sqb_aura) · 897 unmodified lines | |||
| 898 | } | 898 | } |
| 899 | 899 | ||
| 900 | sq->head = 0; | 900 | sq->head = 0; |
| 901 | sq->cons_head = 0; | ||
| 901 | sq->sqe_per_sqb = (pfvf->hw.sqb_size / sq->sqe_size) - 1; | 902 | sq->sqe_per_sqb = (pfvf->hw.sqb_size / sq->sqe_size) - 1; |
| 902 | sq->num_sqbs = (qset->sqe_cnt + sq->sqe_per_sqb) / sq->sqe_per_sqb; | 903 | sq->num_sqbs = (qset->sqe_cnt + sq->sqe_per_sqb) / sq->sqe_per_sqb; |
| 903 | /* Set SQE threshold to 10% of total SQEs */ | 904 | /* Set SQE threshold to 10% of total SQEs */ |
| @@ -15,6 +15,7 @@ · 14 unmodified lines | |||
| 15 | #include <net/ip.h> | 15 | #include <net/ip.h> |
| 16 | #include <linux/bpf.h> | 16 | #include <linux/bpf.h> |
| 17 | #include <linux/bpf_trace.h> | 17 | #include <linux/bpf_trace.h> |
| 18 | #include <linux/bitfield.h> | ||
| 18 | 19 | ||
| 19 | #include "otx2_reg.h" | 20 | #include "otx2_reg.h" |
| 20 | #include "otx2_common.h" | 21 | #include "otx2_common.h" |
| @@ -1171,6 +1172,59 @@ int otx2_set_real_num_queues(struct net_device *netdev, · 1150 unmodified lines | |||
| 1171 | } | 1172 | } |
| 1172 | EXPORT_SYMBOL(otx2_set_real_num_queues); | 1173 | EXPORT_SYMBOL(otx2_set_real_num_queues); |
| 1173 | 1174 | ||
| 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 | |||
| 1174 | static irqreturn_t otx2_q_intr_handler(int irq, void *data) | 1228 | static irqreturn_t otx2_q_intr_handler(int irq, void *data) |
| 1175 | { | 1229 | { |
| 1176 | struct otx2_nic *pf = data; | 1230 | struct otx2_nic *pf = data; |
| @@ -1204,46 +1258,67 @@ static irqreturn_t otx2_q_intr_handler(int irq, void *data) · 27 unmodified lines | |||
| 1204 | 1258 | ||
| 1205 | /* SQ */ | 1259 | /* SQ */ |
| 1206 | for (qidx = 0; qidx < pf->hw.tot_tx_queues; qidx++) { | 1260 | for (qidx = 0; qidx < pf->hw.tot_tx_queues; qidx++) { |
| 1261 | u64 sq_op_err_dbg, mnq_err_dbg, snd_err_dbg; | ||
| 1262 | u8 sq_op_err_code, mnq_err_code, snd_err_code; | ||
| 1263 | |||
| 1264 | /* Below debug registers captures first errors corresponding to | ||
| 1265 | * those registers. We don't have to check against SQ qid as | ||
| 1266 | * these are fatal errors. | ||
| 1267 | */ | ||
| 1268 | |||
| 1207 | ptr = otx2_get_regaddr(pf, NIX_LF_SQ_OP_INT); | 1269 | ptr = otx2_get_regaddr(pf, NIX_LF_SQ_OP_INT); |
| 1208 | val = otx2_atomic64_add((qidx << 44), ptr); | 1270 | val = otx2_atomic64_add((qidx << 44), ptr); |
| 1209 | otx2_write64(pf, NIX_LF_SQ_OP_INT, (qidx << 44) | | 1271 | otx2_write64(pf, NIX_LF_SQ_OP_INT, (qidx << 44) | |
| 1210 | (val & NIX_SQINT_BITS)); | 1272 | (val & NIX_SQINT_BITS)); |
| 1211 | 1273 | ||
| 1212 | if (!(val & (NIX_SQINT_BITS | BIT_ULL(42)))) | ||
| 1213 | continue; | ||
| 1214 | |||
| 1215 | if (val & BIT_ULL(42)) { | 1274 | if (val & BIT_ULL(42)) { |
| 1216 | netdev_err(pf->netdev, "SQ%lld: error reading NIX_LF_SQ_OP_INT, NIX_LF_ERR_INT 0x%llx\n", | 1275 | netdev_err(pf->netdev, "SQ%lld: error reading NIX_LF_SQ_OP_INT, NIX_LF_ERR_INT 0x%llx\n", |
| 1217 | qidx, otx2_read64(pf, NIX_LF_ERR_INT)); | 1276 | qidx, otx2_read64(pf, NIX_LF_ERR_INT)); |
| 1218 | } else { | 1277 | goto done; |
| 1219 | if (val & BIT_ULL(NIX_SQINT_LMT_ERR)) { | ||
| 1220 | netdev_err(pf->netdev, "SQ%lld: LMT store error NIX_LF_SQ_OP_ERR_DBG:0x%llx", | ||
| 1221 | qidx, | ||
| 1222 | otx2_read64(pf, | ||
| 1223 | NIX_LF_SQ_OP_ERR_DBG)); | ||
| 1224 | otx2_write64(pf, NIX_LF_SQ_OP_ERR_DBG, | ||
| 1225 | BIT_ULL(44)); | ||
| 1226 | } | ||
| 1227 | if (val & BIT_ULL(NIX_SQINT_MNQ_ERR)) { | ||
| 1228 | netdev_err(pf->netdev, "SQ%lld: Meta-descriptor enqueue error NIX_LF_MNQ_ERR_DGB:0x%llx\n", | ||
| 1229 | qidx, | ||
| 1230 | otx2_read64(pf, NIX_LF_MNQ_ERR_DBG)); | ||
| 1231 | otx2_write64(pf, NIX_LF_MNQ_ERR_DBG, | ||
| 1232 | BIT_ULL(44)); | ||
| 1233 | } | ||
| 1234 | if (val & BIT_ULL(NIX_SQINT_SEND_ERR)) { | ||
| 1235 | netdev_err(pf->netdev, "SQ%lld: Send error, NIX_LF_SEND_ERR_DBG 0x%llx", | ||
| 1236 | qidx, | ||
| 1237 | otx2_read64(pf, | ||
| 1238 | NIX_LF_SEND_ERR_DBG)); | ||
| 1239 | otx2_write64(pf, NIX_LF_SEND_ERR_DBG, | ||
| 1240 | BIT_ULL(44)); | ||
| 1241 | } | ||
| 1242 | if (val & BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL)) | ||
| 1243 | netdev_err(pf->netdev, "SQ%lld: SQB allocation failed", | ||
| 1244 | qidx); | ||
| 1245 | } | 1278 | } |
| 1246 | 1279 | ||
| 1280 | sq_op_err_dbg = otx2_read64(pf, NIX_LF_SQ_OP_ERR_DBG); | ||
| 1281 | if (!(sq_op_err_dbg & BIT(44))) | ||
| 1282 | goto chk_mnq_err_dbg; | ||
| 1283 | |||
| 1284 | sq_op_err_code = FIELD_GET(GENMASK(7, 0), sq_op_err_dbg); | ||
| 1285 | netdev_err(pf->netdev, "SQ%lld: NIX_LF_SQ_OP_ERR_DBG(%llx) err=%s\n", | ||
| 1286 | qidx, sq_op_err_dbg, nix_sqoperr_e_str[sq_op_err_code]); | ||
| 1287 | |||
| 1288 | otx2_write64(pf, NIX_LF_SQ_OP_ERR_DBG, BIT_ULL(44)); | ||
| 1289 | |||
| 1290 | if (sq_op_err_code == NIX_SQOPERR_SQB_NULL) | ||
| 1291 | goto chk_mnq_err_dbg; | ||
| 1292 | |||
| 1293 | /* Err is not NIX_SQOPERR_SQB_NULL, call aq function to read SQ structure. | ||
| 1294 | * TODO: But we are in irq context. How to call mbox functions which does sleep | ||
| 1295 | */ | ||
| 1296 | |||
| 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 | |||
| 1247 | schedule_work(&pf->reset_task); | 1322 | schedule_work(&pf->reset_task); |
| 1248 | } | 1323 | } |
| 1249 | 1324 | ||
| @@ -281,4 +281,61 @@ enum nix_sqint_e { · 280 unmodified lines | |||
| 281 | BIT_ULL(NIX_SQINT_SEND_ERR) | \ | 281 | BIT_ULL(NIX_SQINT_SEND_ERR) | \ |
| 282 | BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL)) | 282 | BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL)) |
| 283 | 283 | ||
| 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 | |||
| 284 | #endif /* OTX2_STRUCT_H */ | 341 | #endif /* OTX2_STRUCT_H */ |
| @@ -441,6 +441,7 @@ static int otx2_tx_napi_handler(struct otx2_nic *pfvf, · 440 unmodified lines | |||
| 441 | struct otx2_cq_queue *cq, int budget) | 441 | struct otx2_cq_queue *cq, int budget) |
| 442 | { | 442 | { |
| 443 | int tx_pkts = 0, tx_bytes = 0, qidx; | 443 | int tx_pkts = 0, tx_bytes = 0, qidx; |
| 444 | struct otx2_snd_queue *sq; | ||
| 444 | struct nix_cqe_tx_s *cqe; | 445 | struct nix_cqe_tx_s *cqe; |
| 445 | int processed_cqe = 0; | 446 | int processed_cqe = 0; |
| 446 | 447 | ||
| @@ -451,6 +452,9 @@ static int otx2_tx_napi_handler(struct otx2_nic *pfvf, · 4 unmodified lines | |||
| 451 | return 0; | 452 | return 0; |
| 452 | 453 | ||
| 453 | process_cqe: | 454 | process_cqe: |
| 455 | qidx = cq->cq_idx - pfvf->hw.rx_queues; | ||
| 456 | sq = &pfvf->qset.sq[qidx]; | ||
| 457 | |||
| 454 | while (likely(processed_cqe < budget) && cq->pend_cqe) { | 458 | while (likely(processed_cqe < budget) && cq->pend_cqe) { |
| 455 | cqe = (struct nix_cqe_tx_s *)otx2_get_next_cqe(cq); | 459 | cqe = (struct nix_cqe_tx_s *)otx2_get_next_cqe(cq); |
| 456 | if (unlikely(!cqe)) { | 460 | if (unlikely(!cqe)) { |
| @@ -458,18 +462,20 @@ process_cqe: · 1 unmodified line | |||
| 458 | return 0; | 462 | return 0; |
| 459 | break; | 463 | break; |
| 460 | } | 464 | } |
| 465 | |||
| 461 | if (cq->cq_type == CQ_XDP) { | 466 | if (cq->cq_type == CQ_XDP) { |
| 462 | qidx = cq->cq_idx - pfvf->hw.rx_queues; | 467 | otx2_xdp_snd_pkt_handler(pfvf, sq, cqe); |
| 463 | otx2_xdp_snd_pkt_handler(pfvf, &pfvf->qset.sq[qidx], | ||
| 464 | cqe); | ||
| 465 | } else { | 468 | } else { |
| 466 | otx2_snd_pkt_handler(pfvf, cq, | 469 | otx2_snd_pkt_handler(pfvf, cq, sq, cqe, budget, |
| 467 | &pfvf->qset.sq[cq->cint_idx], | 470 | &tx_pkts, &tx_bytes); |
| 468 | cqe, budget, &tx_pkts, &tx_bytes); | ||
| 469 | } | 471 | } |
| 472 | |||
| 470 | cqe->hdr.cqe_type = NIX_XQE_TYPE_INVALID; | 473 | cqe->hdr.cqe_type = NIX_XQE_TYPE_INVALID; |
| 471 | processed_cqe++; | 474 | processed_cqe++; |
| 472 | cq->pend_cqe--; | 475 | cq->pend_cqe--; |
| 476 | |||
| 477 | sq->cons_head++; | ||
| 478 | sq->cons_head &= (sq->sqe_cnt - 1); | ||
| 473 | } | 479 | } |
| 474 | 480 | ||
| 475 | /* Free CQEs to HW */ | 481 | /* Free CQEs to HW */ |
| @@ -1072,17 +1078,17 @@ bool otx2_sq_append_skb(struct net_device *netdev, struct otx2_snd_queue *sq, · 596 unmodified lines | |||
| 1072 | { | 1078 | { |
| 1073 | struct netdev_queue *txq = netdev_get_tx_queue(netdev, qidx); | 1079 | struct netdev_queue *txq = netdev_get_tx_queue(netdev, qidx); |
| 1074 | struct otx2_nic *pfvf = netdev_priv(netdev); | 1080 | struct otx2_nic *pfvf = netdev_priv(netdev); |
| 1075 | int offset, num_segs, free_sqe; | 1081 | int offset, num_segs, free_desc; |
| 1076 | struct nix_sqe_hdr_s *sqe_hdr; | 1082 | struct nix_sqe_hdr_s *sqe_hdr; |
| 1077 | 1083 | ||
| 1078 | /* Check if there is room for new SQE. | 1084 | /* Check if there is enough room between producer |
| 1079 | * 'Num of SQBs freed to SQ's pool - SQ's Aura count' | 1085 | * and consumer index. |
| 1080 | * will give free SQE count. | ||
| 1081 | */ | 1086 | */ |
| 1082 | free_sqe = (sq->num_sqbs - *sq->aura_fc_addr) * sq->sqe_per_sqb; | 1087 | free_desc = (sq->cons_head - sq->head - 1 + sq->sqe_cnt) & (sq->sqe_cnt - 1); |
| 1088 | if (free_desc < sq->sqe_thresh) | ||
| 1089 | return false; | ||
| 1083 | 1090 | ||
| 1084 | if (free_sqe < sq->sqe_thresh || | 1091 | if (free_desc < otx2_get_sqe_count(pfvf, skb)) |
| 1085 | free_sqe < otx2_get_sqe_count(pfvf, skb)) | ||
| 1086 | return false; | 1092 | return false; |
| 1087 | 1093 | ||
| 1088 | num_segs = skb_shinfo(skb)->nr_frags + 1; | 1094 | num_segs = skb_shinfo(skb)->nr_frags + 1; |
| @@ -79,6 +79,7 @@ struct sg_list { · 78 unmodified lines | |||
| 79 | struct otx2_snd_queue { | 79 | struct otx2_snd_queue { |
| 80 | u8 aura_id; | 80 | u8 aura_id; |
| 81 | u16 head; | 81 | u16 head; |
| 82 | u16 cons_head; | ||
| 82 | u16 sqe_size; | 83 | u16 sqe_size; |
| 83 | u32 sqe_cnt; | 84 | u32 sqe_cnt; |
| 84 | u16 num_sqbs; | 85 | u16 num_sqbs; |
| @@ -776,6 +776,7 @@ tx_done: · 775 unmodified lines | |||
| 776 | int prestera_rxtx_switch_init(struct prestera_switch *sw) | 776 | int prestera_rxtx_switch_init(struct prestera_switch *sw) |
| 777 | { | 777 | { |
| 778 | struct prestera_rxtx *rxtx; | 778 | struct prestera_rxtx *rxtx; |
| 779 | int err; | ||
| 779 | 780 | ||
| 780 | rxtx = kzalloc(sizeof(*rxtx), GFP_KERNEL); | 781 | rxtx = kzalloc(sizeof(*rxtx), GFP_KERNEL); |
| 781 | if (!rxtx) | 782 | if (!rxtx) |
| @@ -783,7 +784,11 @@ int prestera_rxtx_switch_init(struct prestera_switch *sw) · 1 unmodified line | |||
| 783 | 784 | ||
| 784 | sw->rxtx = rxtx; | 785 | sw->rxtx = rxtx; |
| 785 | 786 | ||
| 786 | return prestera_sdma_switch_init(sw); | 787 | err = prestera_sdma_switch_init(sw); |
| 788 | if (err) | ||
| 789 | kfree(rxtx); | ||
| 790 | |||
| 791 | return err; | ||
| 787 | } | 792 | } |
| 788 | 793 | ||
| 789 | void prestera_rxtx_switch_fini(struct prestera_switch *sw) | 794 | void prestera_rxtx_switch_fini(struct prestera_switch *sw) |
| @@ -1026,6 +1026,8 @@ static int mtk_star_enable(struct net_device *ndev) · 1025 unmodified lines | |||
| 1026 | return 0; | 1026 | return 0; |
| 1027 | 1027 | ||
| 1028 | err_free_irq: | 1028 | err_free_irq: |
| 1029 | napi_disable(&priv->rx_napi); | ||
| 1030 | napi_disable(&priv->tx_napi); | ||
| 1029 | free_irq(ndev->irq, ndev); | 1031 | free_irq(ndev->irq, ndev); |
| 1030 | err_free_skbs: | 1032 | err_free_skbs: |
| 1031 | mtk_star_free_rx_skbs(priv); | 1033 | mtk_star_free_rx_skbs(priv); |
| @@ -1770,12 +1770,17 @@ void mlx5_cmd_flush(struct mlx5_core_dev *dev) · 1769 unmodified lines | |||
| 1770 | struct mlx5_cmd *cmd = &dev->cmd; | 1770 | struct mlx5_cmd *cmd = &dev->cmd; |
| 1771 | int i; | 1771 | int i; |
| 1772 | 1772 | ||
| 1773 | for (i = 0; i < cmd->max_reg_cmds; i++) | 1773 | for (i = 0; i < cmd->max_reg_cmds; i++) { |
| 1774 | while (down_trylock(&cmd->sem)) | 1774 | while (down_trylock(&cmd->sem)) { |
| 1775 | mlx5_cmd_trigger_completions(dev); | 1775 | mlx5_cmd_trigger_completions(dev); |
| 1776 | cond_resched(); | ||
| 1777 | } | ||
| 1778 | } | ||
| 1776 | 1779 | ||
| 1777 | while (down_trylock(&cmd->pages_sem)) | 1780 | while (down_trylock(&cmd->pages_sem)) { |
| 1778 | mlx5_cmd_trigger_completions(dev); | 1781 | mlx5_cmd_trigger_completions(dev); |
| 1782 | cond_resched(); | ||
| 1783 | } | ||
| 1779 | 1784 | ||
| 1780 | /* Unlock cmdif */ | 1785 | /* Unlock cmdif */ |
| 1781 | up(&cmd->pages_sem); | 1786 | up(&cmd->pages_sem); |
| @@ -164,6 +164,36 @@ static int mlx5_esw_bridge_port_changeupper(struct notifier_block *nb, void *ptr · 163 unmodified lines | |||
| 164 | return err; | 164 | return err; |
| 165 | } | 165 | } |
| 166 | 166 | ||
| 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 | |||
| 167 | static int mlx5_esw_bridge_switchdev_port_event(struct notifier_block *nb, | 197 | static int mlx5_esw_bridge_switchdev_port_event(struct notifier_block *nb, |
| 168 | unsigned long event, void *ptr) | 198 | unsigned long event, void *ptr) |
| 169 | { | 199 | { |
| @@ -171,6 +201,7 @@ static int mlx5_esw_bridge_switchdev_port_event(struct notifier_block *nb, · 1 unmodified line | |||
| 171 | 201 | ||
| 172 | switch (event) { | 202 | switch (event) { |
| 173 | case NETDEV_PRECHANGEUPPER: | 203 | case NETDEV_PRECHANGEUPPER: |
| 204 | err = mlx5_esw_bridge_changeupper_validate_netdev(ptr); | ||
| 174 | break; | 205 | break; |
| 175 | 206 | ||
| 176 | case NETDEV_CHANGEUPPER: | 207 | case NETDEV_CHANGEUPPER: |
| @@ -6,70 +6,42 @@ · 5 unmodified lines | |||
| 6 | #include "en/tc_priv.h" | 6 | #include "en/tc_priv.h" |
| 7 | #include "mlx5_core.h" | 7 | #include "mlx5_core.h" |
| 8 | 8 | ||
| 9 | /* Must be aligned with enum flow_action_id. */ | ||
| 10 | static struct mlx5e_tc_act *tc_acts_fdb[NUM_FLOW_ACTIONS] = { | 9 | static struct mlx5e_tc_act *tc_acts_fdb[NUM_FLOW_ACTIONS] = { |
| 11 | &mlx5e_tc_act_accept, | 10 | [FLOW_ACTION_ACCEPT] = &mlx5e_tc_act_accept, |
| 12 | &mlx5e_tc_act_drop, | 11 | [FLOW_ACTION_DROP] = &mlx5e_tc_act_drop, |
| 13 | &mlx5e_tc_act_trap, | 12 | [FLOW_ACTION_TRAP] = &mlx5e_tc_act_trap, |
| 14 | &mlx5e_tc_act_goto, | 13 | [FLOW_ACTION_GOTO] = &mlx5e_tc_act_goto, |
| 15 | &mlx5e_tc_act_mirred, | 14 | [FLOW_ACTION_REDIRECT] = &mlx5e_tc_act_mirred, |
| 16 | &mlx5e_tc_act_mirred, | 15 | [FLOW_ACTION_MIRRED] = &mlx5e_tc_act_mirred, |
| 17 | &mlx5e_tc_act_redirect_ingress, | 16 | [FLOW_ACTION_REDIRECT_INGRESS] = &mlx5e_tc_act_redirect_ingress, |
| 18 | NULL, /* FLOW_ACTION_MIRRED_INGRESS, */ | 17 | [FLOW_ACTION_VLAN_PUSH] = &mlx5e_tc_act_vlan, |
| 19 | &mlx5e_tc_act_vlan, | 18 | [FLOW_ACTION_VLAN_POP] = &mlx5e_tc_act_vlan, |
| 20 | &mlx5e_tc_act_vlan, | 19 | [FLOW_ACTION_VLAN_MANGLE] = &mlx5e_tc_act_vlan_mangle, |
| 21 | &mlx5e_tc_act_vlan_mangle, | 20 | [FLOW_ACTION_TUNNEL_ENCAP] = &mlx5e_tc_act_tun_encap, |
| 22 | &mlx5e_tc_act_tun_encap, | 21 | [FLOW_ACTION_TUNNEL_DECAP] = &mlx5e_tc_act_tun_decap, |
| 23 | &mlx5e_tc_act_tun_decap, | 22 | [FLOW_ACTION_MANGLE] = &mlx5e_tc_act_pedit, |
| 24 | &mlx5e_tc_act_pedit, | 23 | [FLOW_ACTION_ADD] = &mlx5e_tc_act_pedit, |
| 25 | &mlx5e_tc_act_pedit, | 24 | [FLOW_ACTION_CSUM] = &mlx5e_tc_act_csum, |
| 26 | &mlx5e_tc_act_csum, | 25 | [FLOW_ACTION_PTYPE] = &mlx5e_tc_act_ptype, |
| 27 | NULL, /* FLOW_ACTION_MARK, */ | 26 | [FLOW_ACTION_SAMPLE] = &mlx5e_tc_act_sample, |
| 28 | &mlx5e_tc_act_ptype, | 27 | [FLOW_ACTION_POLICE] = &mlx5e_tc_act_police, |
| 29 | NULL, /* FLOW_ACTION_PRIORITY, */ | 28 | [FLOW_ACTION_CT] = &mlx5e_tc_act_ct, |
| 30 | NULL, /* FLOW_ACTION_WAKE, */ | 29 | [FLOW_ACTION_MPLS_PUSH] = &mlx5e_tc_act_mpls_push, |
| 31 | NULL, /* FLOW_ACTION_QUEUE, */ | 30 | [FLOW_ACTION_MPLS_POP] = &mlx5e_tc_act_mpls_pop, |
| 32 | &mlx5e_tc_act_sample, | 31 | [FLOW_ACTION_VLAN_PUSH_ETH] = &mlx5e_tc_act_vlan, |
| 33 | &mlx5e_tc_act_police, | 32 | [FLOW_ACTION_VLAN_POP_ETH] = &mlx5e_tc_act_vlan, |
| 34 | &mlx5e_tc_act_ct, | ||
| 35 | NULL, /* FLOW_ACTION_CT_METADATA, */ | ||
| 36 | &mlx5e_tc_act_mpls_push, | ||
| 37 | &mlx5e_tc_act_mpls_pop, | ||
| 38 | NULL, /* FLOW_ACTION_MPLS_MANGLE, */ | ||
| 39 | NULL, /* FLOW_ACTION_GATE, */ | ||
| 40 | NULL, /* FLOW_ACTION_PPPOE_PUSH, */ | ||
| 41 | NULL, /* FLOW_ACTION_JUMP, */ | ||
| 42 | NULL, /* FLOW_ACTION_PIPE, */ | ||
| 43 | &mlx5e_tc_act_vlan, | ||
| 44 | &mlx5e_tc_act_vlan, | ||
| 45 | }; | 33 | }; |
| 46 | 34 | ||
| 47 | /* Must be aligned with enum flow_action_id. */ | ||
| 48 | static struct mlx5e_tc_act *tc_acts_nic[NUM_FLOW_ACTIONS] = { | 35 | static struct mlx5e_tc_act *tc_acts_nic[NUM_FLOW_ACTIONS] = { |
| 49 | &mlx5e_tc_act_accept, | 36 | [FLOW_ACTION_ACCEPT] = &mlx5e_tc_act_accept, |
| 50 | &mlx5e_tc_act_drop, | 37 | [FLOW_ACTION_DROP] = &mlx5e_tc_act_drop, |
| 51 | NULL, /* FLOW_ACTION_TRAP, */ | 38 | [FLOW_ACTION_GOTO] = &mlx5e_tc_act_goto, |
| 52 | &mlx5e_tc_act_goto, | 39 | [FLOW_ACTION_REDIRECT] = &mlx5e_tc_act_mirred_nic, |
| 53 | &mlx5e_tc_act_mirred_nic, | 40 | [FLOW_ACTION_MANGLE] = &mlx5e_tc_act_pedit, |
| 54 | NULL, /* FLOW_ACTION_MIRRED, */ | 41 | [FLOW_ACTION_ADD] = &mlx5e_tc_act_pedit, |
| 55 | NULL, /* FLOW_ACTION_REDIRECT_INGRESS, */ | 42 | [FLOW_ACTION_CSUM] = &mlx5e_tc_act_csum, |
| 56 | NULL, /* FLOW_ACTION_MIRRED_INGRESS, */ | 43 | [FLOW_ACTION_MARK] = &mlx5e_tc_act_mark, |
| 57 | NULL, /* FLOW_ACTION_VLAN_PUSH, */ | 44 | [FLOW_ACTION_CT] = &mlx5e_tc_act_ct, |
| 58 | NULL, /* FLOW_ACTION_VLAN_POP, */ | ||
| 59 | NULL, /* FLOW_ACTION_VLAN_MANGLE, */ | ||
| 60 | NULL, /* FLOW_ACTION_TUNNEL_ENCAP, */ | ||
| 61 | NULL, /* FLOW_ACTION_TUNNEL_DECAP, */ | ||
| 62 | &mlx5e_tc_act_pedit, | ||
| 63 | &mlx5e_tc_act_pedit, | ||
| 64 | &mlx5e_tc_act_csum, | ||
| 65 | &mlx5e_tc_act_mark, | ||
| 66 | NULL, /* FLOW_ACTION_PTYPE, */ | ||
| 67 | NULL, /* FLOW_ACTION_PRIORITY, */ | ||
| 68 | NULL, /* FLOW_ACTION_WAKE, */ | ||
| 69 | NULL, /* FLOW_ACTION_QUEUE, */ | ||
| 70 | NULL, /* FLOW_ACTION_SAMPLE, */ | ||
| 71 | NULL, /* FLOW_ACTION_POLICE, */ | ||
| 72 | &mlx5e_tc_act_ct, | ||
| 73 | }; | 45 | }; |
| 74 | 46 | ||
| 75 | /** | 47 | /** |
| @@ -11,6 +11,27 @@ · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | #define INL_HDR_START_SZ (sizeof(((struct mlx5_wqe_eth_seg *)NULL)->inline_hdr.start)) | 12 | #define INL_HDR_START_SZ (sizeof(((struct mlx5_wqe_eth_seg *)NULL)->inline_hdr.start)) |
| 13 | 13 | ||
| 14 | /* IPSEC inline data includes: | ||
| 15 | * 1. ESP trailer: up to 255 bytes of padding, 1 byte for pad length, 1 byte for | ||
| 16 | * next header. | ||
| 17 | * 2. ESP authentication data: 16 bytes for ICV. | ||
| 18 | */ | ||
| 19 | #define MLX5E_MAX_TX_IPSEC_DS DIV_ROUND_UP(sizeof(struct mlx5_wqe_inline_seg) + \ | ||
| 20 | 255 + 1 + 1 + 16, MLX5_SEND_WQE_DS) | ||
| 21 | |||
| 22 | /* 366 should be big enough to cover all L2, L3 and L4 headers with possible | ||
| 23 | * encapsulations. | ||
| 24 | */ | ||
| 25 | #define MLX5E_MAX_TX_INLINE_DS DIV_ROUND_UP(366 - INL_HDR_START_SZ + VLAN_HLEN, \ | ||
| 26 | MLX5_SEND_WQE_DS) | ||
| 27 | |||
| 28 | /* Sync the calculation with mlx5e_sq_calc_wqe_attr. */ | ||
| 29 | #define MLX5E_MAX_TX_WQEBBS DIV_ROUND_UP(MLX5E_TX_WQE_EMPTY_DS_COUNT + \ | ||
| 30 | MLX5E_MAX_TX_INLINE_DS + \ | ||
| 31 | MLX5E_MAX_TX_IPSEC_DS + \ | ||
| 32 | MAX_SKB_FRAGS + 1, \ | ||
| 33 | MLX5_SEND_WQEBB_NUM_DS) | ||
| 34 | |||
| 14 | #define MLX5E_RX_ERR_CQE(cqe) (get_cqe_opcode(cqe) != MLX5_CQE_RESP_SEND) | 35 | #define MLX5E_RX_ERR_CQE(cqe) (get_cqe_opcode(cqe) != MLX5_CQE_RESP_SEND) |
| 15 | 36 | ||
| 16 | static inline | 37 | static inline |
| @@ -424,6 +445,8 @@ mlx5e_set_eseg_swp(struct sk_buff *skb, struct mlx5_wqe_eth_seg *eseg, · 407 unmodified lines | |||
| 424 | 445 | ||
| 425 | static inline u16 mlx5e_stop_room_for_wqe(struct mlx5_core_dev *mdev, u16 wqe_size) | 446 | static inline u16 mlx5e_stop_room_for_wqe(struct mlx5_core_dev *mdev, u16 wqe_size) |
| 426 | { | 447 | { |
| 448 | WARN_ON_ONCE(PAGE_SIZE / MLX5_SEND_WQE_BB < mlx5e_get_max_sq_wqebbs(mdev)); | ||
| 449 | |||
| 427 | /* A WQE must not cross the page boundary, hence two conditions: | 450 | /* A WQE must not cross the page boundary, hence two conditions: |
| 428 | * 1. Its size must not exceed the page size. | 451 | * 1. Its size must not exceed the page size. |
| 429 | * 2. If the WQE size is X, and the space remaining in a page is less | 452 | * 2. If the WQE size is X, and the space remaining in a page is less |
| @@ -436,7 +459,6 @@ static inline u16 mlx5e_stop_room_for_wqe(struct mlx5_core_dev *mdev, u16 wqe_si · 6 unmodified lines | |||
| 436 | "wqe_size %u is greater than max SQ WQEBBs %u", | 459 | "wqe_size %u is greater than max SQ WQEBBs %u", |
| 437 | wqe_size, mlx5e_get_max_sq_wqebbs(mdev)); | 460 | wqe_size, mlx5e_get_max_sq_wqebbs(mdev)); |
| 438 | 461 | ||
| 439 | |||
| 440 | return MLX5E_STOP_ROOM(wqe_size); | 462 | return MLX5E_STOP_ROOM(wqe_size); |
| 441 | } | 463 | } |
| 442 | 464 | ||
| @@ -117,7 +117,7 @@ mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *sq, struct mlx5e_rq *rq, · 116 unmodified lines | |||
| 117 | xdpi.page.rq = rq; | 117 | xdpi.page.rq = rq; |
| 118 | 118 | ||
| 119 | dma_addr = page_pool_get_dma_addr(page) + (xdpf->data - (void *)xdpf); | 119 | dma_addr = page_pool_get_dma_addr(page) + (xdpf->data - (void *)xdpf); |
| 120 | dma_sync_single_for_device(sq->pdev, dma_addr, xdptxd.len, DMA_TO_DEVICE); | 120 | dma_sync_single_for_device(sq->pdev, dma_addr, xdptxd.len, DMA_BIDIRECTIONAL); |
| 121 | 121 | ||
| 122 | if (unlikely(xdp_frame_has_frags(xdpf))) { | 122 | if (unlikely(xdp_frame_has_frags(xdpf))) { |
| 123 | sinfo = xdp_get_shared_info_from_frame(xdpf); | 123 | sinfo = xdp_get_shared_info_from_frame(xdpf); |
| @@ -131,7 +131,7 @@ mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *sq, struct mlx5e_rq *rq, · 7 unmodified lines | |||
| 131 | skb_frag_off(frag); | 131 | skb_frag_off(frag); |
| 132 | len = skb_frag_size(frag); | 132 | len = skb_frag_size(frag); |
| 133 | dma_sync_single_for_device(sq->pdev, addr, len, | 133 | dma_sync_single_for_device(sq->pdev, addr, len, |
| 134 | DMA_TO_DEVICE); | 134 | DMA_BIDIRECTIONAL); |
| 135 | } | 135 | } |
| 136 | } | 136 | } |
| 137 | 137 | ||
| @@ -5694,6 +5694,13 @@ int mlx5e_attach_netdev(struct mlx5e_priv *priv) · 5693 unmodified lines | |||
| 5694 | mlx5e_fs_set_state_destroy(priv->fs, | 5694 | mlx5e_fs_set_state_destroy(priv->fs, |
| 5695 | !test_bit(MLX5E_STATE_DESTROYING, &priv->state)); | 5695 | !test_bit(MLX5E_STATE_DESTROYING, &priv->state)); |
| 5696 | 5696 | ||
| 5697 | /* Validate the max_wqe_size_sq capability. */ | ||
| 5698 | if (WARN_ON_ONCE(mlx5e_get_max_sq_wqebbs(priv->mdev) < MLX5E_MAX_TX_WQEBBS)) { | ||
| 5699 | mlx5_core_warn(priv->mdev, "MLX5E: Max SQ WQEBBs firmware capability: %u, needed %lu\n", | ||
| 5700 | mlx5e_get_max_sq_wqebbs(priv->mdev), MLX5E_MAX_TX_WQEBBS); | ||
| 5701 | return -EIO; | ||
| 5702 | } | ||
| 5703 | |||
| 5697 | /* max number of channels may have changed */ | 5704 | /* max number of channels may have changed */ |
| 5698 | max_nch = mlx5e_calc_max_nch(priv->mdev, priv->netdev, profile); | 5705 | max_nch = mlx5e_calc_max_nch(priv->mdev, priv->netdev, profile); |
| 5699 | if (priv->channels.params.num_channels > max_nch) { | 5706 | if (priv->channels.params.num_channels > max_nch) { |
| @@ -266,7 +266,7 @@ static inline bool mlx5e_rx_cache_get(struct mlx5e_rq *rq, union mlx5e_alloc_uni · 265 unmodified lines | |||
| 266 | 266 | ||
| 267 | addr = page_pool_get_dma_addr(au->page); | 267 | addr = page_pool_get_dma_addr(au->page); |
| 268 | /* Non-XSK always uses PAGE_SIZE. */ | 268 | /* Non-XSK always uses PAGE_SIZE. */ |
| 269 | dma_sync_single_for_device(rq->pdev, addr, PAGE_SIZE, DMA_FROM_DEVICE); | 269 | dma_sync_single_for_device(rq->pdev, addr, PAGE_SIZE, rq->buff.map_dir); |
| 270 | return true; | 270 | return true; |
| 271 | } | 271 | } |
| 272 | 272 | ||
| @@ -282,8 +282,7 @@ static inline int mlx5e_page_alloc_pool(struct mlx5e_rq *rq, union mlx5e_alloc_u · 9 unmodified lines | |||
| 282 | return -ENOMEM; | 282 | return -ENOMEM; |
| 283 | 283 | ||
| 284 | /* Non-XSK always uses PAGE_SIZE. */ | 284 | /* Non-XSK always uses PAGE_SIZE. */ |
| 285 | addr = dma_map_page_attrs(rq->pdev, au->page, 0, PAGE_SIZE, | 285 | addr = dma_map_page(rq->pdev, au->page, 0, PAGE_SIZE, rq->buff.map_dir); |
| 286 | rq->buff.map_dir, DMA_ATTR_SKIP_CPU_SYNC); | ||
| 287 | if (unlikely(dma_mapping_error(rq->pdev, addr))) { | 286 | if (unlikely(dma_mapping_error(rq->pdev, addr))) { |
| 288 | page_pool_recycle_direct(rq->page_pool, au->page); | 287 | page_pool_recycle_direct(rq->page_pool, au->page); |
| 289 | au->page = NULL; | 288 | au->page = NULL; |
| @@ -427,14 +426,15 @@ mlx5e_add_skb_frag(struct mlx5e_rq *rq, struct sk_buff *skb, · 137 unmodified lines | |||
| 427 | { | 426 | { |
| 428 | dma_addr_t addr = page_pool_get_dma_addr(au->page); | 427 | dma_addr_t addr = page_pool_get_dma_addr(au->page); |
| 429 | 428 | ||
| 430 | dma_sync_single_for_cpu(rq->pdev, addr + frag_offset, len, DMA_FROM_DEVICE); | 429 | dma_sync_single_for_cpu(rq->pdev, addr + frag_offset, len, |
| 430 | rq->buff.map_dir); | ||
| 431 | page_ref_inc(au->page); | 431 | page_ref_inc(au->page); |
| 432 | skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, | 432 | skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, |
| 433 | au->page, frag_offset, len, truesize); | 433 | au->page, frag_offset, len, truesize); |
| 434 | } | 434 | } |
| 435 | 435 | ||
| 436 | static inline void | 436 | 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, |
| 438 | struct page *page, dma_addr_t addr, | 438 | struct page *page, dma_addr_t addr, |
| 439 | int offset_from, int dma_offset, u32 headlen) | 439 | int offset_from, int dma_offset, u32 headlen) |
| 440 | { | 440 | { |
| @@ -442,7 +442,8 @@ mlx5e_copy_skb_header(struct device *pdev, struct sk_buff *skb, · 1 unmodified line | |||
| 442 | /* Aligning len to sizeof(long) optimizes memcpy performance */ | 442 | /* Aligning len to sizeof(long) optimizes memcpy performance */ |
| 443 | unsigned int len = ALIGN(headlen, sizeof(long)); | 443 | unsigned int len = ALIGN(headlen, sizeof(long)); |
| 444 | 444 | ||
| 445 | dma_sync_single_for_cpu(pdev, addr + dma_offset, len, DMA_FROM_DEVICE); | 445 | dma_sync_single_for_cpu(rq->pdev, addr + dma_offset, len, |
| 446 | rq->buff.map_dir); | ||
| 446 | skb_copy_to_linear_data(skb, from, len); | 447 | skb_copy_to_linear_data(skb, from, len); |
| 447 | } | 448 | } |
| 448 | 449 | ||
| @@ -1538,7 +1539,7 @@ mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi, · 1089 unmodified lines | |||
| 1538 | 1539 | ||
| 1539 | addr = page_pool_get_dma_addr(au->page); | 1540 | addr = page_pool_get_dma_addr(au->page); |
| 1540 | dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset, | 1541 | dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset, |
| 1541 | frag_size, DMA_FROM_DEVICE); | 1542 | frag_size, rq->buff.map_dir); |
| 1542 | net_prefetch(data); | 1543 | net_prefetch(data); |
| 1543 | 1544 | ||
| 1544 | prog = rcu_dereference(rq->xdp_prog); | 1545 | prog = rcu_dereference(rq->xdp_prog); |
| @@ -1587,7 +1588,7 @@ mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi · 42 unmodified lines | |||
| 1587 | 1588 | ||
| 1588 | addr = page_pool_get_dma_addr(au->page); | 1589 | addr = page_pool_get_dma_addr(au->page); |
| 1589 | dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset, | 1590 | dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset, |
| 1590 | rq->buff.frame0_sz, DMA_FROM_DEVICE); | 1591 | rq->buff.frame0_sz, rq->buff.map_dir); |
| 1591 | net_prefetchw(va); /* xdp_frame data area */ | 1592 | net_prefetchw(va); /* xdp_frame data area */ |
| 1592 | net_prefetch(va + rx_headroom); | 1593 | net_prefetch(va + rx_headroom); |
| 1593 | 1594 | ||
| @@ -1608,7 +1609,7 @@ mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi · 14 unmodified lines | |||
| 1608 | 1609 | ||
| 1609 | addr = page_pool_get_dma_addr(au->page); | 1610 | addr = page_pool_get_dma_addr(au->page); |
| 1610 | dma_sync_single_for_cpu(rq->pdev, addr + wi->offset, | 1611 | dma_sync_single_for_cpu(rq->pdev, addr + wi->offset, |
| 1611 | frag_consumed_bytes, DMA_FROM_DEVICE); | 1612 | frag_consumed_bytes, rq->buff.map_dir); |
| 1612 | 1613 | ||
| 1613 | if (!xdp_buff_has_frags(&xdp)) { | 1614 | if (!xdp_buff_has_frags(&xdp)) { |
| 1614 | /* Init on the first fragment to avoid cold cache access | 1615 | /* Init on the first fragment to avoid cold cache access |
| @@ -1905,7 +1906,7 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *w · 290 unmodified lines | |||
| 1905 | mlx5e_fill_skb_data(skb, rq, au, byte_cnt, frag_offset); | 1906 | mlx5e_fill_skb_data(skb, rq, au, byte_cnt, frag_offset); |
| 1906 | /* copy header */ | 1907 | /* copy header */ |
| 1907 | addr = page_pool_get_dma_addr(head_au->page); | 1908 | addr = page_pool_get_dma_addr(head_au->page); |
| 1908 | mlx5e_copy_skb_header(rq->pdev, skb, head_au->page, addr, | 1909 | mlx5e_copy_skb_header(rq, skb, head_au->page, addr, |
| 1909 | head_offset, head_offset, headlen); | 1910 | head_offset, head_offset, headlen); |
| 1910 | /* skb linear part was allocated with headlen and aligned to long */ | 1911 | /* skb linear part was allocated with headlen and aligned to long */ |
| 1911 | skb->tail += headlen; | 1912 | skb->tail += headlen; |
| @@ -1939,7 +1940,7 @@ mlx5e_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi, · 27 unmodified lines | |||
| 1939 | 1940 | ||
| 1940 | addr = page_pool_get_dma_addr(au->page); | 1941 | addr = page_pool_get_dma_addr(au->page); |
| 1941 | dma_sync_single_range_for_cpu(rq->pdev, addr, head_offset, | 1942 | dma_sync_single_range_for_cpu(rq->pdev, addr, head_offset, |
| 1942 | frag_size, DMA_FROM_DEVICE); | 1943 | frag_size, rq->buff.map_dir); |
| 1943 | net_prefetch(data); | 1944 | net_prefetch(data); |
| 1944 | 1945 | ||
| 1945 | prog = rcu_dereference(rq->xdp_prog); | 1946 | prog = rcu_dereference(rq->xdp_prog); |
| @@ -1987,7 +1988,7 @@ mlx5e_skb_from_cqe_shampo(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi, · 41 unmodified lines | |||
| 1987 | 1988 | ||
| 1988 | if (likely(frag_size <= BIT(MLX5E_SHAMPO_LOG_MAX_HEADER_ENTRY_SIZE))) { | 1989 | if (likely(frag_size <= BIT(MLX5E_SHAMPO_LOG_MAX_HEADER_ENTRY_SIZE))) { |
| 1989 | /* build SKB around header */ | 1990 | /* build SKB around header */ |
| 1990 | dma_sync_single_range_for_cpu(rq->pdev, head->addr, 0, frag_size, DMA_FROM_DEVICE); | 1991 | dma_sync_single_range_for_cpu(rq->pdev, head->addr, 0, frag_size, rq->buff.map_dir); |
| 1991 | prefetchw(hdr); | 1992 | prefetchw(hdr); |
| 1992 | prefetch(data); | 1993 | prefetch(data); |
| 1993 | skb = mlx5e_build_linear_skb(rq, hdr, frag_size, rx_headroom, head_size, 0); | 1994 | skb = mlx5e_build_linear_skb(rq, hdr, frag_size, rx_headroom, head_size, 0); |
| @@ -2009,7 +2010,7 @@ mlx5e_skb_from_cqe_shampo(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi, · 15 unmodified lines | |||
| 2009 | } | 2010 | } |
| 2010 | 2011 | ||
| 2011 | prefetchw(skb->data); | 2012 | prefetchw(skb->data); |
| 2012 | mlx5e_copy_skb_header(rq->pdev, skb, head->page, head->addr, | 2013 | mlx5e_copy_skb_header(rq, skb, head->page, head->addr, |
| 2013 | head_offset + rx_headroom, | 2014 | head_offset + rx_headroom, |
| 2014 | rx_headroom, head_size); | 2015 | rx_headroom, head_size); |
| 2015 | /* skb linear part was allocated with headlen and aligned to long */ | 2016 | /* skb linear part was allocated with headlen and aligned to long */ |
| @@ -3633,10 +3633,14 @@ mlx5e_clone_flow_attr_for_post_act(struct mlx5_flow_attr *attr, · 3632 unmodified lines | |||
| 3633 | attr2->action = 0; | 3633 | attr2->action = 0; |
| 3634 | attr2->flags = 0; | 3634 | attr2->flags = 0; |
| 3635 | attr2->parse_attr = parse_attr; | 3635 | attr2->parse_attr = parse_attr; |
| 3636 | attr2->esw_attr->out_count = 0; | ||
| 3637 | attr2->esw_attr->split_count = 0; | ||
| 3638 | attr2->dest_chain = 0; | 3636 | attr2->dest_chain = 0; |
| 3639 | attr2->dest_ft = NULL; | 3637 | attr2->dest_ft = NULL; |
| 3638 | |||
| 3639 | if (ns_type == MLX5_FLOW_NAMESPACE_FDB) { | ||
| 3640 | attr2->esw_attr->out_count = 0; | ||
| 3641 | attr2->esw_attr->split_count = 0; | ||
| 3642 | } | ||
| 3643 | |||
| 3640 | return attr2; | 3644 | return attr2; |
| 3641 | } | 3645 | } |
| 3642 | 3646 | ||
| @@ -4758,12 +4762,6 @@ int mlx5e_policer_validate(const struct flow_action *action, · 1115 unmodified lines | |||
| 4758 | return -EOPNOTSUPP; | 4762 | return -EOPNOTSUPP; |
| 4759 | } | 4763 | } |
| 4760 | 4764 | ||
| 4761 | if (act->police.rate_pkt_ps) { | ||
| 4762 | NL_SET_ERR_MSG_MOD(extack, | ||
| 4763 | "QoS offload not support packets per second"); | ||
| 4764 | return -EOPNOTSUPP; | ||
| 4765 | } | ||
| 4766 | |||
| 4767 | return 0; | 4765 | return 0; |
| 4768 | } | 4766 | } |
| 4769 | 4767 | ||
| @@ -305,6 +305,8 @@ static void mlx5e_sq_calc_wqe_attr(struct sk_buff *skb, const struct mlx5e_tx_at · 304 unmodified lines | |||
| 305 | u16 ds_cnt_inl = 0; | 305 | u16 ds_cnt_inl = 0; |
| 306 | u16 ds_cnt_ids = 0; | 306 | u16 ds_cnt_ids = 0; |
| 307 | 307 | ||
| 308 | /* Sync the calculation with MLX5E_MAX_TX_WQEBBS. */ | ||
| 309 | |||
| 308 | if (attr->insz) | 310 | if (attr->insz) |
| 309 | ds_cnt_ids = DIV_ROUND_UP(sizeof(struct mlx5_wqe_inline_seg) + attr->insz, | 311 | ds_cnt_ids = DIV_ROUND_UP(sizeof(struct mlx5_wqe_inline_seg) + attr->insz, |
| 310 | MLX5_SEND_WQE_DS); | 312 | MLX5_SEND_WQE_DS); |
| @@ -317,6 +319,9 @@ static void mlx5e_sq_calc_wqe_attr(struct sk_buff *skb, const struct mlx5e_tx_at · 6 unmodified lines | |||
| 317 | inl += VLAN_HLEN; | 319 | inl += VLAN_HLEN; |
| 318 | 320 | ||
| 319 | ds_cnt_inl = DIV_ROUND_UP(inl, MLX5_SEND_WQE_DS); | 321 | ds_cnt_inl = DIV_ROUND_UP(inl, MLX5_SEND_WQE_DS); |
| 322 | if (WARN_ON_ONCE(ds_cnt_inl > MLX5E_MAX_TX_INLINE_DS)) | ||
| 323 | netdev_warn(skb->dev, "ds_cnt_inl = %u > max %u\n", ds_cnt_inl, | ||
| 324 | (u16)MLX5E_MAX_TX_INLINE_DS); | ||
| 320 | ds_cnt += ds_cnt_inl; | 325 | ds_cnt += ds_cnt_inl; |
| 321 | } | 326 | } |
| 322 | 327 | ||
| @@ -1387,12 +1387,14 @@ void mlx5_eswitch_disable_locked(struct mlx5_eswitch *esw) · 1386 unmodified lines | |||
| 1387 | esw->mode == MLX5_ESWITCH_LEGACY ? "LEGACY" : "OFFLOADS", | 1387 | esw->mode == MLX5_ESWITCH_LEGACY ? "LEGACY" : "OFFLOADS", |
| 1388 | esw->esw_funcs.num_vfs, esw->enabled_vports); | 1388 | esw->esw_funcs.num_vfs, esw->enabled_vports); |
| 1389 | 1389 | ||
| 1390 | esw->fdb_table.flags &= ~MLX5_ESW_FDB_CREATED; | 1390 | if (esw->fdb_table.flags & MLX5_ESW_FDB_CREATED) { |
| 1391 | if (esw->mode == MLX5_ESWITCH_OFFLOADS) | 1391 | esw->fdb_table.flags &= ~MLX5_ESW_FDB_CREATED; |
| 1392 | esw_offloads_disable(esw); | 1392 | if (esw->mode == MLX5_ESWITCH_OFFLOADS) |
| 1393 | else if (esw->mode == MLX5_ESWITCH_LEGACY) | 1393 | esw_offloads_disable(esw); |
| 1394 | esw_legacy_disable(esw); | 1394 | else if (esw->mode == MLX5_ESWITCH_LEGACY) |
| 1395 | mlx5_esw_acls_ns_cleanup(esw); | 1395 | esw_legacy_disable(esw); |
| 1396 | mlx5_esw_acls_ns_cleanup(esw); | ||
| 1397 | } | ||
| 1396 | 1398 | ||
| 1397 | if (esw->mode == MLX5_ESWITCH_OFFLOADS) | 1399 | if (esw->mode == MLX5_ESWITCH_OFFLOADS) |
| 1398 | devl_rate_nodes_destroy(devlink); | 1400 | devl_rate_nodes_destroy(devlink); |
| @@ -2310,7 +2310,7 @@ out_free: · 2309 unmodified lines | |||
| 2310 | static int esw_offloads_start(struct mlx5_eswitch *esw, | 2310 | static int esw_offloads_start(struct mlx5_eswitch *esw, |
| 2311 | struct netlink_ext_ack *extack) | 2311 | struct netlink_ext_ack *extack) |
| 2312 | { | 2312 | { |
| 2313 | int err, err1; | 2313 | int err; |
| 2314 | 2314 | ||
| 2315 | esw->mode = MLX5_ESWITCH_OFFLOADS; | 2315 | esw->mode = MLX5_ESWITCH_OFFLOADS; |
| 2316 | err = mlx5_eswitch_enable_locked(esw, esw->dev->priv.sriov.num_vfs); | 2316 | err = mlx5_eswitch_enable_locked(esw, esw->dev->priv.sriov.num_vfs); |
| @@ -2318,11 +2318,6 @@ static int esw_offloads_start(struct mlx5_eswitch *esw, · 1 unmodified line | |||
| 2318 | NL_SET_ERR_MSG_MOD(extack, | 2318 | NL_SET_ERR_MSG_MOD(extack, |
| 2319 | "Failed setting eswitch to offloads"); | 2319 | "Failed setting eswitch to offloads"); |
| 2320 | esw->mode = MLX5_ESWITCH_LEGACY; | 2320 | esw->mode = MLX5_ESWITCH_LEGACY; |
| 2321 | err1 = mlx5_eswitch_enable_locked(esw, MLX5_ESWITCH_IGNORE_NUM_VFS); | ||
| 2322 | if (err1) { | ||
| 2323 | NL_SET_ERR_MSG_MOD(extack, | ||
| 2324 | "Failed setting eswitch back to legacy"); | ||
| 2325 | } | ||
| 2326 | mlx5_rescan_drivers(esw->dev); | 2321 | mlx5_rescan_drivers(esw->dev); |
| 2327 | } | 2322 | } |
| 2328 | if (esw->offloads.inline_mode == MLX5_INLINE_MODE_NONE) { | 2323 | if (esw->offloads.inline_mode == MLX5_INLINE_MODE_NONE) { |
| @@ -3389,19 +3384,12 @@ err_metadata: · 1060 unmodified lines | |||
| 3389 | static int esw_offloads_stop(struct mlx5_eswitch *esw, | 3384 | static int esw_offloads_stop(struct mlx5_eswitch *esw, |
| 3390 | struct netlink_ext_ack *extack) | 3385 | struct netlink_ext_ack *extack) |
| 3391 | { | 3386 | { |
| 3392 | int err, err1; | 3387 | int err; |
| 3393 | 3388 | ||
| 3394 | esw->mode = MLX5_ESWITCH_LEGACY; | 3389 | esw->mode = MLX5_ESWITCH_LEGACY; |
| 3395 | err = mlx5_eswitch_enable_locked(esw, MLX5_ESWITCH_IGNORE_NUM_VFS); | 3390 | err = mlx5_eswitch_enable_locked(esw, MLX5_ESWITCH_IGNORE_NUM_VFS); |
| 3396 | if (err) { | 3391 | if (err) |
| 3397 | NL_SET_ERR_MSG_MOD(extack, "Failed setting eswitch to legacy"); | 3392 | NL_SET_ERR_MSG_MOD(extack, "Failed setting eswitch to legacy"); |
| 3398 | esw->mode = MLX5_ESWITCH_OFFLOADS; | ||
| 3399 | err1 = mlx5_eswitch_enable_locked(esw, MLX5_ESWITCH_IGNORE_NUM_VFS); | ||
| 3400 | if (err1) { | ||
| 3401 | NL_SET_ERR_MSG_MOD(extack, | ||
| 3402 | "Failed setting eswitch back to offloads"); | ||
| 3403 | } | ||
| 3404 | } | ||
| 3405 | 3393 | ||
| 3406 | return err; | 3394 | return err; |
| 3407 | } | 3395 | } |
| @@ -30,9 +30,9 @@ mlx5_eswitch_termtbl_hash(struct mlx5_flow_act *flow_act, · 29 unmodified lines | |||
| 30 | sizeof(dest->vport.num), hash); | 30 | sizeof(dest->vport.num), hash); |
| 31 | hash = jhash((const void *)&dest->vport.vhca_id, | 31 | hash = jhash((const void *)&dest->vport.vhca_id, |
| 32 | sizeof(dest->vport.num), hash); | 32 | sizeof(dest->vport.num), hash); |
| 33 | if (dest->vport.pkt_reformat) | 33 | if (flow_act->pkt_reformat) |
| 34 | hash = jhash(dest->vport.pkt_reformat, | 34 | hash = jhash(flow_act->pkt_reformat, |
| 35 | sizeof(*dest->vport.pkt_reformat), | 35 | sizeof(*flow_act->pkt_reformat), |
| 36 | hash); | 36 | hash); |
| 37 | return hash; | 37 | return hash; |
| 38 | } | 38 | } |
| @@ -53,9 +53,11 @@ mlx5_eswitch_termtbl_cmp(struct mlx5_flow_act *flow_act1, · 14 unmodified lines | |||
| 53 | if (ret) | 53 | if (ret) |
| 54 | return ret; | 54 | return ret; |
| 55 | 55 | ||
| 56 | return dest1->vport.pkt_reformat && dest2->vport.pkt_reformat ? | 56 | if (flow_act1->pkt_reformat && flow_act2->pkt_reformat) |
| 57 | memcmp(dest1->vport.pkt_reformat, dest2->vport.pkt_reformat, | 57 | return memcmp(flow_act1->pkt_reformat, flow_act2->pkt_reformat, |
| 58 | sizeof(*dest1->vport.pkt_reformat)) : 0; | 58 | sizeof(*flow_act1->pkt_reformat)); |
| 59 | |||
| 60 | return !(flow_act1->pkt_reformat == flow_act2->pkt_reformat); | ||
| 59 | } | 61 | } |
| 60 | 62 | ||
| 61 | static int | 63 | static int |
| @@ -152,7 +152,8 @@ static void mlx5_fw_reset_complete_reload(struct mlx5_core_dev *dev) · 151 unmodified lines | |||
| 152 | mlx5_unload_one(dev); | 152 | mlx5_unload_one(dev); |
| 153 | if (mlx5_health_wait_pci_up(dev)) | 153 | if (mlx5_health_wait_pci_up(dev)) |
| 154 | mlx5_core_err(dev, "reset reload flow aborted, PCI reads still not working\n"); | 154 | mlx5_core_err(dev, "reset reload flow aborted, PCI reads still not working\n"); |
| 155 | mlx5_load_one(dev, false); | 155 | else |
| 156 | mlx5_load_one(dev, false); | ||
| 156 | devlink_remote_reload_actions_performed(priv_to_devlink(dev), 0, | 157 | devlink_remote_reload_actions_performed(priv_to_devlink(dev), 0, |
| 157 | BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT) | | 158 | BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT) | |
| 158 | BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE)); | 159 | BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE)); |
| @@ -7128,9 +7128,8 @@ static int s2io_card_up(struct s2io_nic *sp) · 7127 unmodified lines | |||
| 7128 | if (ret) { | 7128 | if (ret) { |
| 7129 | DBG_PRINT(ERR_DBG, "%s: Out of memory in Open\n", | 7129 | DBG_PRINT(ERR_DBG, "%s: Out of memory in Open\n", |
| 7130 | dev->name); | 7130 | dev->name); |
| 7131 | s2io_reset(sp); | 7131 | ret = -ENOMEM; |
| 7132 | free_rx_buffers(sp); | 7132 | goto err_fill_buff; |
| 7133 | return -ENOMEM; | ||
| 7134 | } | 7133 | } |
| 7135 | DBG_PRINT(INFO_DBG, "Buf in ring:%d is %d:\n", i, | 7134 | DBG_PRINT(INFO_DBG, "Buf in ring:%d is %d:\n", i, |
| 7136 | ring->rx_bufs_left); | 7135 | ring->rx_bufs_left); |
| @@ -7168,18 +7167,16 @@ static int s2io_card_up(struct s2io_nic *sp) · 31 unmodified lines | |||
| 7168 | /* Enable Rx Traffic and interrupts on the NIC */ | 7167 | /* Enable Rx Traffic and interrupts on the NIC */ |
| 7169 | if (start_nic(sp)) { | 7168 | if (start_nic(sp)) { |
| 7170 | DBG_PRINT(ERR_DBG, "%s: Starting NIC failed\n", dev->name); | 7169 | DBG_PRINT(ERR_DBG, "%s: Starting NIC failed\n", dev->name); |
| 7171 | s2io_reset(sp); | 7170 | ret = -ENODEV; |
| 7172 | free_rx_buffers(sp); | 7171 | goto err_out; |
| 7173 | return -ENODEV; | ||
| 7174 | } | 7172 | } |
| 7175 | 7173 | ||
| 7176 | /* Add interrupt service routine */ | 7174 | /* Add interrupt service routine */ |
| 7177 | if (s2io_add_isr(sp) != 0) { | 7175 | if (s2io_add_isr(sp) != 0) { |
| 7178 | if (sp->config.intr_type == MSI_X) | 7176 | if (sp->config.intr_type == MSI_X) |
| 7179 | s2io_rem_isr(sp); | 7177 | s2io_rem_isr(sp); |
| 7180 | s2io_reset(sp); | 7178 | ret = -ENODEV; |
| 7181 | free_rx_buffers(sp); | 7179 | goto err_out; |
| 7182 | return -ENODEV; | ||
| 7183 | } | 7180 | } |
| 7184 | 7181 | ||
| 7185 | timer_setup(&sp->alarm_timer, s2io_alarm_handle, 0); | 7182 | timer_setup(&sp->alarm_timer, s2io_alarm_handle, 0); |
| @@ -7199,6 +7196,20 @@ static int s2io_card_up(struct s2io_nic *sp) · 13 unmodified lines | |||
| 7199 | } | 7196 | } |
| 7200 | 7197 | ||
| 7201 | return 0; | 7198 | return 0; |
| 7199 | |||
| 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; | ||
| 7202 | } | 7213 | } |
| 7203 | 7214 | ||
| 7204 | /** | 7215 | /** |
| @@ -900,6 +900,7 @@ static int nixge_open(struct net_device *ndev) · 899 unmodified lines | |||
| 900 | err_rx_irq: | 900 | err_rx_irq: |
| 901 | free_irq(priv->tx_irq, ndev); | 901 | free_irq(priv->tx_irq, ndev); |
| 902 | err_tx_irq: | 902 | err_tx_irq: |
| 903 | napi_disable(&priv->napi); | ||
| 903 | phy_stop(phy); | 904 | phy_stop(phy); |
| 904 | phy_disconnect(phy); | 905 | phy_disconnect(phy); |
| 905 | tasklet_kill(&priv->dma_err_tasklet); | 906 | tasklet_kill(&priv->dma_err_tasklet); |
| @@ -629,7 +629,6 @@ static int ehl_common_data(struct pci_dev *pdev, · 628 unmodified lines | |||
| 629 | { | 629 | { |
| 630 | plat->rx_queues_to_use = 8; | 630 | plat->rx_queues_to_use = 8; |
| 631 | plat->tx_queues_to_use = 8; | 631 | plat->tx_queues_to_use = 8; |
| 632 | plat->clk_ptp_rate = 200000000; | ||
| 633 | plat->use_phy_wol = 1; | 632 | plat->use_phy_wol = 1; |
| 634 | 633 | ||
| 635 | plat->safety_feat_cfg->tsoee = 1; | 634 | plat->safety_feat_cfg->tsoee = 1; |
| @@ -654,6 +653,8 @@ static int ehl_sgmii_data(struct pci_dev *pdev, · 18 unmodified lines | |||
| 654 | plat->serdes_powerup = intel_serdes_powerup; | 653 | plat->serdes_powerup = intel_serdes_powerup; |
| 655 | plat->serdes_powerdown = intel_serdes_powerdown; | 654 | plat->serdes_powerdown = intel_serdes_powerdown; |
| 656 | 655 | ||
| 656 | plat->clk_ptp_rate = 204800000; | ||
| 657 | |||
| 657 | return ehl_common_data(pdev, plat); | 658 | return ehl_common_data(pdev, plat); |
| 658 | } | 659 | } |
| 659 | 660 | ||
| @@ -667,6 +668,8 @@ static int ehl_rgmii_data(struct pci_dev *pdev, · 7 unmodified lines | |||
| 667 | plat->bus_id = 1; | 668 | plat->bus_id = 1; |
| 668 | plat->phy_interface = PHY_INTERFACE_MODE_RGMII; | 669 | plat->phy_interface = PHY_INTERFACE_MODE_RGMII; |
| 669 | 670 | ||
| 671 | plat->clk_ptp_rate = 204800000; | ||
| 672 | |||
| 670 | return ehl_common_data(pdev, plat); | 673 | return ehl_common_data(pdev, plat); |
| 671 | } | 674 | } |
| 672 | 675 | ||
| @@ -683,6 +686,8 @@ static int ehl_pse0_common_data(struct pci_dev *pdev, · 10 unmodified lines | |||
| 683 | plat->bus_id = 2; | 686 | plat->bus_id = 2; |
| 684 | plat->addr64 = 32; | 687 | plat->addr64 = 32; |
| 685 | 688 | ||
| 689 | plat->clk_ptp_rate = 200000000; | ||
| 690 | |||
| 686 | intel_mgbe_pse_crossts_adj(intel_priv, EHL_PSE_ART_MHZ); | 691 | intel_mgbe_pse_crossts_adj(intel_priv, EHL_PSE_ART_MHZ); |
| 687 | 692 | ||
| 688 | return ehl_common_data(pdev, plat); | 693 | return ehl_common_data(pdev, plat); |
| @@ -722,6 +727,8 @@ static int ehl_pse1_common_data(struct pci_dev *pdev, · 33 unmodified lines | |||
| 722 | plat->bus_id = 3; | 727 | plat->bus_id = 3; |
| 723 | plat->addr64 = 32; | 728 | plat->addr64 = 32; |
| 724 | 729 | ||
| 730 | plat->clk_ptp_rate = 200000000; | ||
| 731 | |||
| 725 | intel_mgbe_pse_crossts_adj(intel_priv, EHL_PSE_ART_MHZ); | 732 | intel_mgbe_pse_crossts_adj(intel_priv, EHL_PSE_ART_MHZ); |
| 726 | 733 | ||
| 727 | return ehl_common_data(pdev, plat); | 734 | return ehl_common_data(pdev, plat); |
| @@ -757,7 +764,7 @@ static int tgl_common_data(struct pci_dev *pdev, · 29 unmodified lines | |||
| 757 | { | 764 | { |
| 758 | plat->rx_queues_to_use = 6; | 765 | plat->rx_queues_to_use = 6; |
| 759 | plat->tx_queues_to_use = 4; | 766 | plat->tx_queues_to_use = 4; |
| 760 | plat->clk_ptp_rate = 200000000; | 767 | plat->clk_ptp_rate = 204800000; |
| 761 | plat->speed_mode_2500 = intel_speed_mode_2500; | 768 | plat->speed_mode_2500 = intel_speed_mode_2500; |
| 762 | 769 | ||
| 763 | plat->safety_feat_cfg->tsoee = 1; | 770 | plat->safety_feat_cfg->tsoee = 1; |
| @@ -75,20 +75,24 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id · 74 unmodified lines | |||
| 75 | plat->mdio_bus_data = devm_kzalloc(&pdev->dev, | 75 | plat->mdio_bus_data = devm_kzalloc(&pdev->dev, |
| 76 | sizeof(*plat->mdio_bus_data), | 76 | sizeof(*plat->mdio_bus_data), |
| 77 | GFP_KERNEL); | 77 | GFP_KERNEL); |
| 78 | if (!plat->mdio_bus_data) | 78 | if (!plat->mdio_bus_data) { |
| 79 | return -ENOMEM; | 79 | ret = -ENOMEM; |
| 80 | goto err_put_node; | ||
| 81 | } | ||
| 80 | plat->mdio_bus_data->needs_reset = true; | 82 | plat->mdio_bus_data->needs_reset = true; |
| 81 | } | 83 | } |
| 82 | 84 | ||
| 83 | plat->dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*plat->dma_cfg), GFP_KERNEL); | 85 | plat->dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*plat->dma_cfg), GFP_KERNEL); |
| 84 | if (!plat->dma_cfg) | 86 | if (!plat->dma_cfg) { |
| 85 | return -ENOMEM; | 87 | ret = -ENOMEM; |
| 88 | goto err_put_node; | ||
| 89 | } | ||
| 86 | 90 | ||
| 87 | /* Enable pci device */ | 91 | /* Enable pci device */ |
| 88 | ret = pci_enable_device(pdev); | 92 | ret = pci_enable_device(pdev); |
| 89 | if (ret) { | 93 | if (ret) { |
| 90 | dev_err(&pdev->dev, "%s: ERROR: failed to enable device\n", __func__); | 94 | dev_err(&pdev->dev, "%s: ERROR: failed to enable device\n", __func__); |
| 91 | return ret; | 95 | goto err_put_node; |
| 92 | } | 96 | } |
| 93 | 97 | ||
| 94 | /* Get the base address of device */ | 98 | /* Get the base address of device */ |
| @@ -97,7 +101,7 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id · 2 unmodified lines | |||
| 97 | continue; | 101 | continue; |
| 98 | ret = pcim_iomap_regions(pdev, BIT(0), pci_name(pdev)); | 102 | ret = pcim_iomap_regions(pdev, BIT(0), pci_name(pdev)); |
| 99 | if (ret) | 103 | if (ret) |
| 100 | return ret; | 104 | goto err_disable_device; |
| 101 | break; | 105 | break; |
| 102 | } | 106 | } |
| 103 | 107 | ||
| @@ -108,7 +112,8 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id · 4 unmodified lines | |||
| 108 | phy_mode = device_get_phy_mode(&pdev->dev); | 112 | phy_mode = device_get_phy_mode(&pdev->dev); |
| 109 | if (phy_mode < 0) { | 113 | if (phy_mode < 0) { |
| 110 | dev_err(&pdev->dev, "phy_mode not found\n"); | 114 | dev_err(&pdev->dev, "phy_mode not found\n"); |
| 111 | return phy_mode; | 115 | ret = phy_mode; |
| 116 | goto err_disable_device; | ||
| 112 | } | 117 | } |
| 113 | 118 | ||
| 114 | plat->phy_interface = phy_mode; | 119 | plat->phy_interface = phy_mode; |
| @@ -125,6 +130,7 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id · 10 unmodified lines | |||
| 125 | if (res.irq < 0) { | 130 | if (res.irq < 0) { |
| 126 | dev_err(&pdev->dev, "IRQ macirq not found\n"); | 131 | dev_err(&pdev->dev, "IRQ macirq not found\n"); |
| 127 | ret = -ENODEV; | 132 | ret = -ENODEV; |
| 133 | goto err_disable_msi; | ||
| 128 | } | 134 | } |
| 129 | 135 | ||
| 130 | res.wol_irq = of_irq_get_byname(np, "eth_wake_irq"); | 136 | res.wol_irq = of_irq_get_byname(np, "eth_wake_irq"); |
| @@ -137,15 +143,31 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id · 6 unmodified lines | |||
| 137 | if (res.lpi_irq < 0) { | 143 | if (res.lpi_irq < 0) { |
| 138 | dev_err(&pdev->dev, "IRQ eth_lpi not found\n"); | 144 | dev_err(&pdev->dev, "IRQ eth_lpi not found\n"); |
| 139 | ret = -ENODEV; | 145 | ret = -ENODEV; |
| 146 | goto err_disable_msi; | ||
| 140 | } | 147 | } |
| 141 | 148 | ||
| 142 | return stmmac_dvr_probe(&pdev->dev, plat, &res); | 149 | ret = stmmac_dvr_probe(&pdev->dev, plat, &res); |
| 150 | if (ret) | ||
| 151 | goto err_disable_msi; | ||
| 152 | |||
| 153 | return ret; | ||
| 154 | |||
| 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; | ||
| 143 | } | 162 | } |
| 144 | 163 | ||
| 145 | static void loongson_dwmac_remove(struct pci_dev *pdev) | 164 | static void loongson_dwmac_remove(struct pci_dev *pdev) |
| 146 | { | 165 | { |
| 166 | struct net_device *ndev = dev_get_drvdata(&pdev->dev); | ||
| 167 | struct stmmac_priv *priv = netdev_priv(ndev); | ||
| 147 | int i; | 168 | int i; |
| 148 | 169 | ||
| 170 | of_node_put(priv->plat->mdio_node); | ||
| 149 | stmmac_dvr_remove(&pdev->dev); | 171 | stmmac_dvr_remove(&pdev->dev); |
| 150 | 172 | ||
| 151 | for (i = 0; i < PCI_STD_NUM_BARS; i++) { | 173 | for (i = 0; i < PCI_STD_NUM_BARS; i++) { |
| @@ -155,6 +177,7 @@ static void loongson_dwmac_remove(struct pci_dev *pdev) · 3 unmodified lines | |||
| 155 | break; | 177 | break; |
| 156 | } | 178 | } |
| 157 | 179 | ||
| 180 | pci_disable_msi(pdev); | ||
| 158 | pci_disable_device(pdev); | 181 | pci_disable_device(pdev); |
| 159 | } | 182 | } |
| 160 | 183 | ||
| @@ -272,11 +272,9 @@ static int meson8b_devm_clk_prepare_enable(struct meson8b_dwmac *dwmac, · 271 unmodified lines | |||
| 272 | if (ret) | 272 | if (ret) |
| 273 | return ret; | 273 | return ret; |
| 274 | 274 | ||
| 275 | devm_add_action_or_reset(dwmac->dev, | 275 | return devm_add_action_or_reset(dwmac->dev, |
| 276 | (void(*)(void *))clk_disable_unprepare, | 276 | (void(*)(void *))clk_disable_unprepare, |
| 277 | dwmac->rgmii_tx_clk); | 277 | clk); |
| 278 | |||
| 279 | return 0; | ||
| 280 | } | 278 | } |
| 281 | 279 | ||
| 282 | static int meson8b_init_rgmii_delays(struct meson8b_dwmac *dwmac) | 280 | static int meson8b_init_rgmii_delays(struct meson8b_dwmac *dwmac) |
| @@ -287,7 +287,6 @@ static u32 spl2sw_init_netdev(struct platform_device *pdev, u8 *mac_addr, · 286 unmodified lines | |||
| 287 | if (ret) { | 287 | if (ret) { |
| 288 | dev_err(&pdev->dev, "Failed to register net device \"%s\"!\n", | 288 | dev_err(&pdev->dev, "Failed to register net device \"%s\"!\n", |
| 289 | ndev->name); | 289 | ndev->name); |
| 290 | free_netdev(ndev); | ||
| 291 | *r_ndev = NULL; | 290 | *r_ndev = NULL; |
| 292 | return ret; | 291 | return ret; |
| 293 | } | 292 | } |
| @@ -2823,7 +2823,6 @@ static int am65_cpsw_nuss_remove(struct platform_device *pdev) · 2822 unmodified lines | |||
| 2823 | if (ret < 0) | 2823 | if (ret < 0) |
| 2824 | return ret; | 2824 | return ret; |
| 2825 | 2825 | ||
| 2826 | am65_cpsw_nuss_phylink_cleanup(common); | ||
| 2827 | am65_cpsw_unregister_devlink(common); | 2826 | am65_cpsw_unregister_devlink(common); |
| 2828 | am65_cpsw_unregister_notifiers(common); | 2827 | am65_cpsw_unregister_notifiers(common); |
| 2829 | 2828 | ||
| @@ -2831,6 +2830,7 @@ static int am65_cpsw_nuss_remove(struct platform_device *pdev) · 1 unmodified line | |||
| 2831 | * dma_deconfigure(dev) before devres_release_all(dev) | 2830 | * dma_deconfigure(dev) before devres_release_all(dev) |
| 2832 | */ | 2831 | */ |
| 2833 | am65_cpsw_nuss_cleanup_ndev(common); | 2832 | am65_cpsw_nuss_cleanup_ndev(common); |
| 2833 | am65_cpsw_nuss_phylink_cleanup(common); | ||
| 2834 | 2834 | ||
| 2835 | of_platform_device_destroy(common->mdio_dev, NULL); | 2835 | of_platform_device_destroy(common->mdio_dev, NULL); |
| 2836 | 2836 | ||
| @@ -854,6 +854,8 @@ static int cpsw_ndo_open(struct net_device *ndev) · 853 unmodified lines | |||
| 854 | 854 | ||
| 855 | err_cleanup: | 855 | err_cleanup: |
| 856 | if (!cpsw->usage_count) { | 856 | if (!cpsw->usage_count) { |
| 857 | napi_disable(&cpsw->napi_rx); | ||
| 858 | napi_disable(&cpsw->napi_tx); | ||
| 857 | cpdma_ctlr_stop(cpsw->dma); | 859 | cpdma_ctlr_stop(cpsw->dma); |
| 858 | cpsw_destroy_xdp_rxqs(cpsw); | 860 | cpsw_destroy_xdp_rxqs(cpsw); |
| 859 | } | 861 | } |
| @@ -1290,12 +1290,15 @@ static int tsi108_open(struct net_device *dev) · 1289 unmodified lines | |||
| 1290 | 1290 | ||
| 1291 | data->rxring = dma_alloc_coherent(&data->pdev->dev, rxring_size, | 1291 | data->rxring = dma_alloc_coherent(&data->pdev->dev, rxring_size, |
| 1292 | &data->rxdma, GFP_KERNEL); | 1292 | &data->rxdma, GFP_KERNEL); |
| 1293 | if (!data->rxring) | 1293 | if (!data->rxring) { |
| 1294 | free_irq(data->irq_num, dev); | ||
| 1294 | return -ENOMEM; | 1295 | return -ENOMEM; |
| 1296 | } | ||
| 1295 | 1297 | ||
| 1296 | data->txring = dma_alloc_coherent(&data->pdev->dev, txring_size, | 1298 | data->txring = dma_alloc_coherent(&data->pdev->dev, txring_size, |
| 1297 | &data->txdma, GFP_KERNEL); | 1299 | &data->txdma, GFP_KERNEL); |
| 1298 | if (!data->txring) { | 1300 | if (!data->txring) { |
| 1301 | free_irq(data->irq_num, dev); | ||
| 1299 | dma_free_coherent(&data->pdev->dev, rxring_size, data->rxring, | 1302 | dma_free_coherent(&data->pdev->dev, rxring_size, data->rxring, |
| 1300 | data->rxdma); | 1303 | data->rxdma); |
| 1301 | return -ENOMEM; | 1304 | return -ENOMEM; |
| @@ -533,7 +533,7 @@ static int bpq_device_event(struct notifier_block *this, · 532 unmodified lines | |||
| 533 | if (!net_eq(dev_net(dev), &init_net)) | 533 | if (!net_eq(dev_net(dev), &init_net)) |
| 534 | return NOTIFY_DONE; | 534 | return NOTIFY_DONE; |
| 535 | 535 | ||
| 536 | if (!dev_is_ethdev(dev)) | 536 | if (!dev_is_ethdev(dev) && !bpq_get_ax25_dev(dev)) |
| 537 | return NOTIFY_DONE; | 537 | return NOTIFY_DONE; |
| 538 | 538 | ||
| 539 | switch (event) { | 539 | switch (event) { |
| @@ -1413,7 +1413,8 @@ static struct macsec_rx_sc *del_rx_sc(struct macsec_secy *secy, sci_t sci) · 1412 unmodified lines | |||
| 1413 | return NULL; | 1413 | return NULL; |
| 1414 | } | 1414 | } |
| 1415 | 1415 | ||
| 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) | ||
| 1417 | { | 1418 | { |
| 1418 | struct macsec_rx_sc *rx_sc; | 1419 | struct macsec_rx_sc *rx_sc; |
| 1419 | struct macsec_dev *macsec; | 1420 | struct macsec_dev *macsec; |
| @@ -1437,7 +1438,7 @@ static struct macsec_rx_sc *create_rx_sc(struct net_device *dev, sci_t sci) · 17 unmodified lines | |||
| 1437 | } | 1438 | } |
| 1438 | 1439 | ||
| 1439 | rx_sc->sci = sci; | 1440 | rx_sc->sci = sci; |
| 1440 | rx_sc->active = true; | 1441 | rx_sc->active = active; |
| 1441 | refcount_set(&rx_sc->refcnt, 1); | 1442 | refcount_set(&rx_sc->refcnt, 1); |
| 1442 | 1443 | ||
| 1443 | secy = &macsec_priv(dev)->secy; | 1444 | secy = &macsec_priv(dev)->secy; |
| @@ -1838,6 +1839,7 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info) · 394 unmodified lines | |||
| 1838 | secy->key_len); | 1839 | secy->key_len); |
| 1839 | 1840 | ||
| 1840 | err = macsec_offload(ops->mdo_add_rxsa, &ctx); | 1841 | err = macsec_offload(ops->mdo_add_rxsa, &ctx); |
| 1842 | memzero_explicit(ctx.sa.key, secy->key_len); | ||
| 1841 | if (err) | 1843 | if (err) |
| 1842 | goto cleanup; | 1844 | goto cleanup; |
| 1843 | } | 1845 | } |
| @@ -1876,7 +1878,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) · 32 unmodified lines | |||
| 1876 | struct macsec_rx_sc *rx_sc; | 1878 | struct macsec_rx_sc *rx_sc; |
| 1877 | struct nlattr *tb_rxsc[MACSEC_RXSC_ATTR_MAX + 1]; | 1879 | struct nlattr *tb_rxsc[MACSEC_RXSC_ATTR_MAX + 1]; |
| 1878 | struct macsec_secy *secy; | 1880 | struct macsec_secy *secy; |
| 1879 | bool was_active; | 1881 | bool active = true; |
| 1880 | int ret; | 1882 | int ret; |
| 1881 | 1883 | ||
| 1882 | if (!attrs[MACSEC_ATTR_IFINDEX]) | 1884 | if (!attrs[MACSEC_ATTR_IFINDEX]) |
| @@ -1898,16 +1900,15 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) · 15 unmodified lines | |||
| 1898 | secy = &macsec_priv(dev)->secy; | 1900 | secy = &macsec_priv(dev)->secy; |
| 1899 | sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]); | 1901 | sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]); |
| 1900 | 1902 | ||
| 1901 | rx_sc = create_rx_sc(dev, sci); | 1903 | if (tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE]) |
| 1904 | active = nla_get_u8(tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE]); | ||
| 1905 | |||
| 1906 | rx_sc = create_rx_sc(dev, sci, active); | ||
| 1902 | if (IS_ERR(rx_sc)) { | 1907 | if (IS_ERR(rx_sc)) { |
| 1903 | rtnl_unlock(); | 1908 | rtnl_unlock(); |
| 1904 | return PTR_ERR(rx_sc); | 1909 | return PTR_ERR(rx_sc); |
| 1905 | } | 1910 | } |
| 1906 | 1911 | ||
| 1907 | was_active = rx_sc->active; | ||
| 1908 | if (tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE]) | ||
| 1909 | rx_sc->active = !!nla_get_u8(tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE]); | ||
| 1910 | |||
| 1911 | if (macsec_is_offloaded(netdev_priv(dev))) { | 1912 | if (macsec_is_offloaded(netdev_priv(dev))) { |
| 1912 | const struct macsec_ops *ops; | 1913 | const struct macsec_ops *ops; |
| 1913 | struct macsec_context ctx; | 1914 | struct macsec_context ctx; |
| @@ -1931,7 +1932,8 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) · 17 unmodified lines | |||
| 1931 | return 0; | 1932 | return 0; |
| 1932 | 1933 | ||
| 1933 | cleanup: | 1934 | cleanup: |
| 1934 | rx_sc->active = was_active; | 1935 | del_rx_sc(secy, sci); |
| 1936 | free_rx_sc(rx_sc); | ||
| 1935 | rtnl_unlock(); | 1937 | rtnl_unlock(); |
| 1936 | return ret; | 1938 | return ret; |
| 1937 | } | 1939 | } |
| @@ -2080,6 +2082,7 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info) · 142 unmodified lines | |||
| 2080 | secy->key_len); | 2082 | secy->key_len); |
| 2081 | 2083 | ||
| 2082 | err = macsec_offload(ops->mdo_add_txsa, &ctx); | 2084 | err = macsec_offload(ops->mdo_add_txsa, &ctx); |
| 2085 | memzero_explicit(ctx.sa.key, secy->key_len); | ||
| 2083 | if (err) | 2086 | if (err) |
| 2084 | goto cleanup; | 2087 | goto cleanup; |
| 2085 | } | 2088 | } |
| @@ -2570,7 +2573,7 @@ static bool macsec_is_configured(struct macsec_dev *macsec) · 484 unmodified lines | |||
| 2570 | struct macsec_tx_sc *tx_sc = &secy->tx_sc; | 2573 | struct macsec_tx_sc *tx_sc = &secy->tx_sc; |
| 2571 | int i; | 2574 | int i; |
| 2572 | 2575 | ||
| 2573 | if (secy->n_rx_sc > 0) | 2576 | if (secy->rx_sc) |
| 2574 | return true; | 2577 | return true; |
| 2575 | 2578 | ||
| 2576 | for (i = 0; i < MACSEC_NUM_AN; i++) | 2579 | for (i = 0; i < MACSEC_NUM_AN; i++) |
| @@ -2654,11 +2657,6 @@ static int macsec_upd_offload(struct sk_buff *skb, struct genl_info *info) · 77 unmodified lines | |||
| 2654 | if (ret) | 2657 | if (ret) |
| 2655 | goto rollback; | 2658 | goto rollback; |
| 2656 | 2659 | ||
| 2657 | /* Force features update, since they are different for SW MACSec and | ||
| 2658 | * HW offloading cases. | ||
| 2659 | */ | ||
| 2660 | netdev_update_features(dev); | ||
| 2661 | |||
| 2662 | rtnl_unlock(); | 2660 | rtnl_unlock(); |
| 2663 | return 0; | 2661 | return 0; |
| 2664 | 2662 | ||
| @@ -3432,16 +3430,9 @@ static netdev_tx_t macsec_start_xmit(struct sk_buff *skb, · 767 unmodified lines | |||
| 3432 | return ret; | 3430 | return ret; |
| 3433 | } | 3431 | } |
| 3434 | 3432 | ||
| 3435 | #define SW_MACSEC_FEATURES \ | 3433 | #define MACSEC_FEATURES \ |
| 3436 | (NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST) | 3434 | (NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST) |
| 3437 | 3435 | ||
| 3438 | /* If h/w offloading is enabled, use real device features save for | ||
| 3439 | * VLAN_FEATURES - they require additional ops | ||
| 3440 | * HW_MACSEC - no reason to report it | ||
| 3441 | */ | ||
| 3442 | #define REAL_DEV_FEATURES(dev) \ | ||
| 3443 | ((dev)->features & ~(NETIF_F_VLAN_FEATURES | NETIF_F_HW_MACSEC)) | ||
| 3444 | |||
| 3445 | static int macsec_dev_init(struct net_device *dev) | 3436 | static int macsec_dev_init(struct net_device *dev) |
| 3446 | { | 3437 | { |
| 3447 | struct macsec_dev *macsec = macsec_priv(dev); | 3438 | struct macsec_dev *macsec = macsec_priv(dev); |
| @@ -3458,12 +3449,8 @@ static int macsec_dev_init(struct net_device *dev) · 10 unmodified lines | |||
| 3458 | return err; | 3449 | return err; |
| 3459 | } | 3450 | } |
| 3460 | 3451 | ||
| 3461 | if (macsec_is_offloaded(macsec)) { | 3452 | dev->features = real_dev->features & MACSEC_FEATURES; |
| 3462 | dev->features = REAL_DEV_FEATURES(real_dev); | 3453 | dev->features |= NETIF_F_LLTX | NETIF_F_GSO_SOFTWARE; |
| 3463 | } else { | ||
| 3464 | dev->features = real_dev->features & SW_MACSEC_FEATURES; | ||
| 3465 | dev->features |= NETIF_F_LLTX | NETIF_F_GSO_SOFTWARE; | ||
| 3466 | } | ||
| 3467 | 3454 | ||
| 3468 | dev->needed_headroom = real_dev->needed_headroom + | 3455 | dev->needed_headroom = real_dev->needed_headroom + |
| 3469 | MACSEC_NEEDED_HEADROOM; | 3456 | MACSEC_NEEDED_HEADROOM; |
| @@ -3495,10 +3482,7 @@ static netdev_features_t macsec_fix_features(struct net_device *dev, · 25 unmodified lines | |||
| 3495 | struct macsec_dev *macsec = macsec_priv(dev); | 3482 | struct macsec_dev *macsec = macsec_priv(dev); |
| 3496 | struct net_device *real_dev = macsec->real_dev; | 3483 | struct net_device *real_dev = macsec->real_dev; |
| 3497 | 3484 | ||
| 3498 | if (macsec_is_offloaded(macsec)) | 3485 | features &= (real_dev->features & MACSEC_FEATURES) | |
| 3499 | return REAL_DEV_FEATURES(real_dev); | ||
| 3500 | |||
| 3501 | features &= (real_dev->features & SW_MACSEC_FEATURES) | | ||
| 3502 | NETIF_F_GSO_SOFTWARE | NETIF_F_SOFT_FEATURES; | 3486 | NETIF_F_GSO_SOFTWARE | NETIF_F_SOFT_FEATURES; |
| 3503 | features |= NETIF_F_LLTX; | 3487 | features |= NETIF_F_LLTX; |
| 3504 | 3488 | ||
| @@ -1533,8 +1533,10 @@ destroy_macvlan_port: · 1532 unmodified lines | |||
| 1533 | /* the macvlan port may be freed by macvlan_uninit when fail to register. | 1533 | /* the macvlan port may be freed by macvlan_uninit when fail to register. |
| 1534 | * so we destroy the macvlan port only when it's valid. | 1534 | * so we destroy the macvlan port only when it's valid. |
| 1535 | */ | 1535 | */ |
| 1536 | if (create && macvlan_port_get_rtnl(lowerdev)) | 1536 | if (create && macvlan_port_get_rtnl(lowerdev)) { |
| 1537 | macvlan_flush_sources(port, vlan); | ||
| 1537 | macvlan_port_destroy(port->dev); | 1538 | macvlan_port_destroy(port->dev); |
| 1539 | } | ||
| 1538 | return err; | 1540 | return err; |
| 1539 | } | 1541 | } |
| 1540 | EXPORT_SYMBOL_GPL(macvlan_common_newlink); | 1542 | EXPORT_SYMBOL_GPL(macvlan_common_newlink); |
| @@ -632,6 +632,7 @@ static void vsc8584_macsec_free_flow(struct vsc8531_private *priv, · 631 unmodified lines | |||
| 632 | 632 | ||
| 633 | list_del(&flow->list); | 633 | list_del(&flow->list); |
| 634 | clear_bit(flow->index, bitmap); | 634 | clear_bit(flow->index, bitmap); |
| 635 | memzero_explicit(flow->key, sizeof(flow->key)); | ||
| 635 | kfree(flow); | 636 | kfree(flow); |
| 636 | } | 637 | } |
| 637 | 638 | ||
| @@ -1967,17 +1967,25 @@ drop: · 1966 unmodified lines | |||
| 1967 | skb_headlen(skb)); | 1967 | skb_headlen(skb)); |
| 1968 | 1968 | ||
| 1969 | if (unlikely(headlen > skb_headlen(skb))) { | 1969 | if (unlikely(headlen > skb_headlen(skb))) { |
| 1970 | WARN_ON_ONCE(1); | ||
| 1971 | err = -ENOMEM; | ||
| 1970 | dev_core_stats_rx_dropped_inc(tun->dev); | 1972 | dev_core_stats_rx_dropped_inc(tun->dev); |
| 1973 | napi_busy: | ||
| 1971 | napi_free_frags(&tfile->napi); | 1974 | napi_free_frags(&tfile->napi); |
| 1972 | rcu_read_unlock(); | 1975 | rcu_read_unlock(); |
| 1973 | mutex_unlock(&tfile->napi_mutex); | 1976 | mutex_unlock(&tfile->napi_mutex); |
| 1974 | WARN_ON(1); | 1977 | return err; |
| 1975 | return -ENOMEM; | ||
| 1976 | } | 1978 | } |
| 1977 | 1979 | ||
| 1978 | local_bh_disable(); | 1980 | if (likely(napi_schedule_prep(&tfile->napi))) { |
| 1979 | napi_gro_frags(&tfile->napi); | 1981 | local_bh_disable(); |
| 1980 | local_bh_enable(); | 1982 | napi_gro_frags(&tfile->napi); |
| 1983 | napi_complete(&tfile->napi); | ||
| 1984 | local_bh_enable(); | ||
| 1985 | } else { | ||
| 1986 | err = -EBUSY; | ||
| 1987 | goto napi_busy; | ||
| 1988 | } | ||
| 1981 | mutex_unlock(&tfile->napi_mutex); | 1989 | mutex_unlock(&tfile->napi_mutex); |
| 1982 | } else if (tfile->napi_enabled) { | 1990 | } else if (tfile->napi_enabled) { |
| 1983 | struct sk_buff_head *queue = &tfile->sk.sk_write_queue; | 1991 | struct sk_buff_head *queue = &tfile->sk.sk_write_queue; |
| @@ -325,6 +325,7 @@ static int lapbeth_open(struct net_device *dev) · 324 unmodified lines | |||
| 325 | 325 | ||
| 326 | err = lapb_register(dev, &lapbeth_callbacks); | 326 | err = lapb_register(dev, &lapbeth_callbacks); |
| 327 | if (err != LAPB_OK) { | 327 | if (err != LAPB_OK) { |
| 328 | napi_disable(&lapbeth->napi); | ||
| 328 | pr_err("lapb_register error: %d\n", err); | 329 | pr_err("lapb_register error: %d\n", err); |
| 329 | return -ENODEV; | 330 | return -ENODEV; |
| 330 | } | 331 | } |
| @@ -446,7 +447,7 @@ static int lapbeth_device_event(struct notifier_block *this, · 115 unmodified lines | |||
| 446 | if (dev_net(dev) != &init_net) | 447 | if (dev_net(dev) != &init_net) |
| 447 | return NOTIFY_DONE; | 448 | return NOTIFY_DONE; |
| 448 | 449 | ||
| 449 | if (!dev_is_ethdev(dev)) | 450 | if (!dev_is_ethdev(dev) && !lapbeth_get_x25_dev(dev)) |
| 450 | return NOTIFY_DONE; | 451 | return NOTIFY_DONE; |
| 451 | 452 | ||
| 452 | switch (event) { | 453 | switch (event) { |
| @@ -27,7 +27,7 @@ · 26 unmodified lines | |||
| 27 | #define ATH11K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01 52 | 27 | #define ATH11K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01 52 |
| 28 | #define ATH11K_QMI_CALDB_SIZE 0x480000 | 28 | #define ATH11K_QMI_CALDB_SIZE 0x480000 |
| 29 | #define ATH11K_QMI_BDF_EXT_STR_LENGTH 0x20 | 29 | #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 |
| 31 | 31 | ||
| 32 | #define QMI_WLFW_REQUEST_MEM_IND_V01 0x0035 | 32 | #define QMI_WLFW_REQUEST_MEM_IND_V01 0x0035 |
| 33 | #define QMI_WLFW_FW_MEM_READY_IND_V01 0x0037 | 33 | #define QMI_WLFW_FW_MEM_READY_IND_V01 0x0037 |
| @@ -287,11 +287,7 @@ int ath11k_regd_update(struct ath11k *ar) · 286 unmodified lines | |||
| 287 | goto err; | 287 | goto err; |
| 288 | } | 288 | } |
| 289 | 289 | ||
| 290 | rtnl_lock(); | 290 | ret = regulatory_set_wiphy_regd(ar->hw->wiphy, regd_copy); |
| 291 | wiphy_lock(ar->hw->wiphy); | ||
| 292 | ret = regulatory_set_wiphy_regd_sync(ar->hw->wiphy, regd_copy); | ||
| 293 | wiphy_unlock(ar->hw->wiphy); | ||
| 294 | rtnl_unlock(); | ||
| 295 | 291 | ||
| 296 | kfree(regd_copy); | 292 | kfree(regd_copy); |
| 297 | 293 | ||
| @@ -228,6 +228,10 @@ static void brcmf_fweh_event_worker(struct work_struct *work) · 227 unmodified lines | |||
| 228 | brcmf_fweh_event_name(event->code), event->code, | 228 | brcmf_fweh_event_name(event->code), event->code, |
| 229 | event->emsg.ifidx, event->emsg.bsscfgidx, | 229 | event->emsg.ifidx, event->emsg.bsscfgidx, |
| 230 | event->emsg.addr); | 230 | event->emsg.addr); |
| 231 | if (event->emsg.bsscfgidx >= BRCMF_MAX_IFS) { | ||
| 232 | bphy_err(drvr, "invalid bsscfg index: %u\n", event->emsg.bsscfgidx); | ||
| 233 | goto event_free; | ||
| 234 | } | ||
| 231 | 235 | ||
| 232 | /* convert event message */ | 236 | /* convert event message */ |
| 233 | emsg_be = &event->emsg; | 237 | emsg_be = &event->emsg; |
| @@ -5232,7 +5232,7 @@ static int get_wep_tx_idx(struct airo_info *ai) · 5231 unmodified lines | |||
| 5232 | return -1; | 5232 | return -1; |
| 5233 | } | 5233 | } |
| 5234 | 5234 | ||
| 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, |
| 5236 | u16 keylen, int perm, int lock) | 5236 | u16 keylen, int perm, int lock) |
| 5237 | { | 5237 | { |
| 5238 | static const unsigned char macaddr[ETH_ALEN] = { 0x01, 0, 0, 0, 0, 0 }; | 5238 | static const unsigned char macaddr[ETH_ALEN] = { 0x01, 0, 0, 0, 0, 0 }; |
| @@ -5283,7 +5283,7 @@ static void proc_wepkey_on_close(struct inode *inode, struct file *file) · 44 unmodified lines | |||
| 5283 | struct net_device *dev = pde_data(inode); | 5283 | struct net_device *dev = pde_data(inode); |
| 5284 | struct airo_info *ai = dev->ml_priv; | 5284 | struct airo_info *ai = dev->ml_priv; |
| 5285 | int i, rc; | 5285 | int i, rc; |
| 5286 | char key[16]; | 5286 | u8 key[16]; |
| 5287 | u16 index = 0; | 5287 | u16 index = 0; |
| 5288 | int j = 0; | 5288 | int j = 0; |
| 5289 | 5289 | ||
| @@ -5311,12 +5311,22 @@ static void proc_wepkey_on_close(struct inode *inode, struct file *file) · 21 unmodified lines | |||
| 5311 | } | 5311 | } |
| 5312 | 5312 | ||
| 5313 | for (i = 0; i < 16*3 && data->wbuffer[i+j]; i++) { | 5313 | for (i = 0; i < 16*3 && data->wbuffer[i+j]; i++) { |
| 5314 | int val; | ||
| 5315 | |||
| 5316 | if (i % 3 == 2) | ||
| 5317 | continue; | ||
| 5318 | |||
| 5319 | val = hex_to_bin(data->wbuffer[i+j]); | ||
| 5320 | if (val < 0) { | ||
| 5321 | airo_print_err(ai->dev->name, "WebKey passed invalid key hex"); | ||
| 5322 | return; | ||
| 5323 | } | ||
| 5314 | switch(i%3) { | 5324 | switch(i%3) { |
| 5315 | case 0: | 5325 | case 0: |
| 5316 | key[i/3] = hex_to_bin(data->wbuffer[i+j])<<4; | 5326 | key[i/3] = (u8)val << 4; |
| 5317 | break; | 5327 | break; |
| 5318 | case 1: | 5328 | case 1: |
| 5319 | key[i/3] |= hex_to_bin(data->wbuffer[i+j]); | 5329 | key[i/3] |= (u8)val; |
| 5320 | break; | 5330 | break; |
| 5321 | } | 5331 | } |
| 5322 | } | 5332 | } |
| @@ -910,6 +910,7 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac, · 909 unmodified lines | |||
| 910 | struct hwsim_vif_priv *vp = (void *)vif->drv_priv; | 910 | struct hwsim_vif_priv *vp = (void *)vif->drv_priv; |
| 911 | struct sk_buff *skb; | 911 | struct sk_buff *skb; |
| 912 | struct ieee80211_hdr *hdr; | 912 | struct ieee80211_hdr *hdr; |
| 913 | struct ieee80211_tx_info *cb; | ||
| 913 | 914 | ||
| 914 | if (!vp->assoc) | 915 | if (!vp->assoc) |
| 915 | return; | 916 | return; |
| @@ -931,6 +932,10 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac, · 15 unmodified lines | |||
| 931 | memcpy(hdr->addr2, mac, ETH_ALEN); | 932 | memcpy(hdr->addr2, mac, ETH_ALEN); |
| 932 | memcpy(hdr->addr3, vp->bssid, ETH_ALEN); | 933 | memcpy(hdr->addr3, vp->bssid, ETH_ALEN); |
| 933 | 934 | ||
| 935 | cb = IEEE80211_SKB_CB(skb); | ||
| 936 | cb->control.rates[0].count = 1; | ||
| 937 | cb->control.rates[1].idx = -1; | ||
| 938 | |||
| 934 | rcu_read_lock(); | 939 | rcu_read_lock(); |
| 935 | mac80211_hwsim_tx_frame(data->hw, skb, | 940 | mac80211_hwsim_tx_frame(data->hw, skb, |
| 936 | rcu_dereference(vif->bss_conf.chanctx_conf)->def.chan); | 941 | rcu_dereference(vif->bss_conf.chanctx_conf)->def.chan); |
| @@ -1023,9 +1023,9 @@ static int rt2400pci_set_state(struct rt2x00_dev *rt2x00dev, · 1022 unmodified lines | |||
| 1023 | { | 1023 | { |
| 1024 | u32 reg, reg2; | 1024 | u32 reg, reg2; |
| 1025 | unsigned int i; | 1025 | unsigned int i; |
| 1026 | char put_to_sleep; | 1026 | bool put_to_sleep; |
| 1027 | char bbp_state; | 1027 | u8 bbp_state; |
| 1028 | char rf_state; | 1028 | u8 rf_state; |
| 1029 | 1029 | ||
| 1030 | put_to_sleep = (state != STATE_AWAKE); | 1030 | put_to_sleep = (state != STATE_AWAKE); |
| 1031 | 1031 | ||
| @@ -1561,7 +1561,7 @@ static int rt2400pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 529 unmodified lines | |||
| 1561 | { | 1561 | { |
| 1562 | struct hw_mode_spec *spec = &rt2x00dev->spec; | 1562 | struct hw_mode_spec *spec = &rt2x00dev->spec; |
| 1563 | struct channel_info *info; | 1563 | struct channel_info *info; |
| 1564 | char *tx_power; | 1564 | u8 *tx_power; |
| 1565 | unsigned int i; | 1565 | unsigned int i; |
| 1566 | 1566 | ||
| 1567 | /* | 1567 | /* |
| @@ -939,7 +939,7 @@ · 938 unmodified lines | |||
| 939 | #define DEFAULT_TXPOWER 39 | 939 | #define DEFAULT_TXPOWER 39 |
| 940 | 940 | ||
| 941 | #define __CLAMP_TX(__txpower) \ | 941 | #define __CLAMP_TX(__txpower) \ |
| 942 | clamp_t(char, (__txpower), MIN_TXPOWER, MAX_TXPOWER) | 942 | clamp_t(u8, (__txpower), MIN_TXPOWER, MAX_TXPOWER) |
| 943 | 943 | ||
| 944 | #define TXPOWER_FROM_DEV(__txpower) \ | 944 | #define TXPOWER_FROM_DEV(__txpower) \ |
| 945 | ((__CLAMP_TX(__txpower) - MAX_TXPOWER) + MIN_TXPOWER) | 945 | ((__CLAMP_TX(__txpower) - MAX_TXPOWER) + MIN_TXPOWER) |
| @@ -1176,9 +1176,9 @@ static int rt2500pci_set_state(struct rt2x00_dev *rt2x00dev, · 1175 unmodified lines | |||
| 1176 | { | 1176 | { |
| 1177 | u32 reg, reg2; | 1177 | u32 reg, reg2; |
| 1178 | unsigned int i; | 1178 | unsigned int i; |
| 1179 | char put_to_sleep; | 1179 | bool put_to_sleep; |
| 1180 | char bbp_state; | 1180 | u8 bbp_state; |
| 1181 | char rf_state; | 1181 | u8 rf_state; |
| 1182 | 1182 | ||
| 1183 | put_to_sleep = (state != STATE_AWAKE); | 1183 | put_to_sleep = (state != STATE_AWAKE); |
| 1184 | 1184 | ||
| @@ -1856,7 +1856,7 @@ static int rt2500pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 671 unmodified lines | |||
| 1856 | { | 1856 | { |
| 1857 | struct hw_mode_spec *spec = &rt2x00dev->spec; | 1857 | struct hw_mode_spec *spec = &rt2x00dev->spec; |
| 1858 | struct channel_info *info; | 1858 | struct channel_info *info; |
| 1859 | char *tx_power; | 1859 | u8 *tx_power; |
| 1860 | unsigned int i; | 1860 | unsigned int i; |
| 1861 | 1861 | ||
| 1862 | /* | 1862 | /* |
| @@ -1219,6 +1219,6 @@ · 1218 unmodified lines | |||
| 1219 | (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) | 1219 | (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) |
| 1220 | 1220 | ||
| 1221 | #define TXPOWER_TO_DEV(__txpower) \ | 1221 | #define TXPOWER_TO_DEV(__txpower) \ |
| 1222 | clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER) | 1222 | clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER) |
| 1223 | 1223 | ||
| 1224 | #endif /* RT2500PCI_H */ | 1224 | #endif /* RT2500PCI_H */ |
| @@ -984,9 +984,9 @@ static int rt2500usb_set_state(struct rt2x00_dev *rt2x00dev, · 983 unmodified lines | |||
| 984 | u16 reg; | 984 | u16 reg; |
| 985 | u16 reg2; | 985 | u16 reg2; |
| 986 | unsigned int i; | 986 | unsigned int i; |
| 987 | char put_to_sleep; | 987 | bool put_to_sleep; |
| 988 | char bbp_state; | 988 | u8 bbp_state; |
| 989 | char rf_state; | 989 | u8 rf_state; |
| 990 | 990 | ||
| 991 | put_to_sleep = (state != STATE_AWAKE); | 991 | put_to_sleep = (state != STATE_AWAKE); |
| 992 | 992 | ||
| @@ -1663,7 +1663,7 @@ static int rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 670 unmodified lines | |||
| 1663 | { | 1663 | { |
| 1664 | struct hw_mode_spec *spec = &rt2x00dev->spec; | 1664 | struct hw_mode_spec *spec = &rt2x00dev->spec; |
| 1665 | struct channel_info *info; | 1665 | struct channel_info *info; |
| 1666 | char *tx_power; | 1666 | u8 *tx_power; |
| 1667 | unsigned int i; | 1667 | unsigned int i; |
| 1668 | 1668 | ||
| 1669 | /* | 1669 | /* |
| @@ -839,6 +839,6 @@ · 838 unmodified lines | |||
| 839 | (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) | 839 | (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) |
| 840 | 840 | ||
| 841 | #define TXPOWER_TO_DEV(__txpower) \ | 841 | #define TXPOWER_TO_DEV(__txpower) \ |
| 842 | clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER) | 842 | clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER) |
| 843 | 843 | ||
| 844 | #endif /* RT2500USB_H */ | 844 | #endif /* RT2500USB_H */ |
| @@ -3372,10 +3372,10 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, · 3371 unmodified lines | |||
| 3372 | if (rt2x00_has_cap_bt_coexist(rt2x00dev)) { | 3372 | if (rt2x00_has_cap_bt_coexist(rt2x00dev)) { |
| 3373 | if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { | 3373 | if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { |
| 3374 | /* r55/r59 value array of channel 1~14 */ | 3374 | /* r55/r59 value array of channel 1~14 */ |
| 3375 | static const char r55_bt_rev[] = {0x83, 0x83, | 3375 | static const u8 r55_bt_rev[] = {0x83, 0x83, |
| 3376 | 0x83, 0x73, 0x73, 0x63, 0x53, 0x53, | 3376 | 0x83, 0x73, 0x73, 0x63, 0x53, 0x53, |
| 3377 | 0x53, 0x43, 0x43, 0x43, 0x43, 0x43}; | 3377 | 0x53, 0x43, 0x43, 0x43, 0x43, 0x43}; |
| 3378 | static const char r59_bt_rev[] = {0x0e, 0x0e, | 3378 | static const u8 r59_bt_rev[] = {0x0e, 0x0e, |
| 3379 | 0x0e, 0x0e, 0x0e, 0x0b, 0x0a, 0x09, | 3379 | 0x0e, 0x0e, 0x0e, 0x0b, 0x0a, 0x09, |
| 3380 | 0x07, 0x07, 0x07, 0x07, 0x07, 0x07}; | 3380 | 0x07, 0x07, 0x07, 0x07, 0x07, 0x07}; |
| 3381 | 3381 | ||
| @@ -3384,7 +3384,7 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, · 2 unmodified lines | |||
| 3384 | rt2800_rfcsr_write(rt2x00dev, 59, | 3384 | rt2800_rfcsr_write(rt2x00dev, 59, |
| 3385 | r59_bt_rev[idx]); | 3385 | r59_bt_rev[idx]); |
| 3386 | } else { | 3386 | } else { |
| 3387 | static const char r59_bt[] = {0x8b, 0x8b, 0x8b, | 3387 | static const u8 r59_bt[] = {0x8b, 0x8b, 0x8b, |
| 3388 | 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x89, | 3388 | 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x89, |
| 3389 | 0x88, 0x88, 0x86, 0x85, 0x84}; | 3389 | 0x88, 0x88, 0x86, 0x85, 0x84}; |
| 3390 | 3390 | ||
| @@ -3392,10 +3392,10 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, · 1 unmodified line | |||
| 3392 | } | 3392 | } |
| 3393 | } else { | 3393 | } else { |
| 3394 | if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { | 3394 | if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { |
| 3395 | static const char r55_nonbt_rev[] = {0x23, 0x23, | 3395 | static const u8 r55_nonbt_rev[] = {0x23, 0x23, |
| 3396 | 0x23, 0x23, 0x13, 0x13, 0x03, 0x03, | 3396 | 0x23, 0x23, 0x13, 0x13, 0x03, 0x03, |
| 3397 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03}; | 3397 | 0x03, 0x03, 0x03, 0x03, 0x03, 0x03}; |
| 3398 | static const char r59_nonbt_rev[] = {0x07, 0x07, | 3398 | static const u8 r59_nonbt_rev[] = {0x07, 0x07, |
| 3399 | 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, | 3399 | 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, |
| 3400 | 0x07, 0x07, 0x06, 0x05, 0x04, 0x04}; | 3400 | 0x07, 0x07, 0x06, 0x05, 0x04, 0x04}; |
| 3401 | 3401 | ||
| @@ -3406,14 +3406,14 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, · 4 unmodified lines | |||
| 3406 | } else if (rt2x00_rt(rt2x00dev, RT5390) || | 3406 | } else if (rt2x00_rt(rt2x00dev, RT5390) || |
| 3407 | rt2x00_rt(rt2x00dev, RT5392) || | 3407 | rt2x00_rt(rt2x00dev, RT5392) || |
| 3408 | rt2x00_rt(rt2x00dev, RT6352)) { | 3408 | rt2x00_rt(rt2x00dev, RT6352)) { |
| 3409 | static const char r59_non_bt[] = {0x8f, 0x8f, | 3409 | static const u8 r59_non_bt[] = {0x8f, 0x8f, |
| 3410 | 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8d, | 3410 | 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8d, |
| 3411 | 0x8a, 0x88, 0x88, 0x87, 0x87, 0x86}; | 3411 | 0x8a, 0x88, 0x88, 0x87, 0x87, 0x86}; |
| 3412 | 3412 | ||
| 3413 | rt2800_rfcsr_write(rt2x00dev, 59, | 3413 | rt2800_rfcsr_write(rt2x00dev, 59, |
| 3414 | r59_non_bt[idx]); | 3414 | r59_non_bt[idx]); |
| 3415 | } else if (rt2x00_rt(rt2x00dev, RT5350)) { | 3415 | } else if (rt2x00_rt(rt2x00dev, RT5350)) { |
| 3416 | static const char r59_non_bt[] = {0x0b, 0x0b, | 3416 | static const u8 r59_non_bt[] = {0x0b, 0x0b, |
| 3417 | 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, | 3417 | 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, |
| 3418 | 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06}; | 3418 | 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06}; |
| 3419 | 3419 | ||
| @@ -4035,23 +4035,23 @@ static void rt2800_iq_calibrate(struct rt2x00_dev *rt2x00dev, int channel) · 615 unmodified lines | |||
| 4035 | rt2800_bbp_write(rt2x00dev, 159, cal != 0xff ? cal : 0); | 4035 | rt2800_bbp_write(rt2x00dev, 159, cal != 0xff ? cal : 0); |
| 4036 | } | 4036 | } |
| 4037 | 4037 | ||
| 4038 | static char rt2800_txpower_to_dev(struct rt2x00_dev *rt2x00dev, | 4038 | static s8 rt2800_txpower_to_dev(struct rt2x00_dev *rt2x00dev, |
| 4039 | unsigned int channel, | 4039 | unsigned int channel, |
| 4040 | char txpower) | 4040 | s8 txpower) |
| 4041 | { | 4041 | { |
| 4042 | if (rt2x00_rt(rt2x00dev, RT3593) || | 4042 | if (rt2x00_rt(rt2x00dev, RT3593) || |
| 4043 | rt2x00_rt(rt2x00dev, RT3883)) | 4043 | rt2x00_rt(rt2x00dev, RT3883)) |
| 4044 | txpower = rt2x00_get_field8(txpower, EEPROM_TXPOWER_ALC); | 4044 | txpower = rt2x00_get_field8(txpower, EEPROM_TXPOWER_ALC); |
| 4045 | 4045 | ||
| 4046 | if (channel <= 14) | 4046 | if (channel <= 14) |
| 4047 | return clamp_t(char, txpower, MIN_G_TXPOWER, MAX_G_TXPOWER); | 4047 | return clamp_t(s8, txpower, MIN_G_TXPOWER, MAX_G_TXPOWER); |
| 4048 | 4048 | ||
| 4049 | if (rt2x00_rt(rt2x00dev, RT3593) || | 4049 | if (rt2x00_rt(rt2x00dev, RT3593) || |
| 4050 | rt2x00_rt(rt2x00dev, RT3883)) | 4050 | rt2x00_rt(rt2x00dev, RT3883)) |
| 4051 | return clamp_t(char, txpower, MIN_A_TXPOWER_3593, | 4051 | return clamp_t(s8, txpower, MIN_A_TXPOWER_3593, |
| 4052 | MAX_A_TXPOWER_3593); | 4052 | MAX_A_TXPOWER_3593); |
| 4053 | else | 4053 | else |
| 4054 | return clamp_t(char, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER); | 4054 | return clamp_t(s8, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER); |
| 4055 | } | 4055 | } |
| 4056 | 4056 | ||
| 4057 | static void rt3883_bbp_adjust(struct rt2x00_dev *rt2x00dev, | 4057 | 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 | |||
| 8530 | u8 bytevalue = 0; | 8530 | u8 bytevalue = 0; |
| 8531 | int rcalcode; | 8531 | int rcalcode; |
| 8532 | u8 r_cal_code = 0; | 8532 | u8 r_cal_code = 0; |
| 8533 | char d1 = 0, d2 = 0; | 8533 | s8 d1 = 0, d2 = 0; |
| 8534 | u8 rfvalue; | 8534 | u8 rfvalue; |
| 8535 | u32 MAC_RF_BYPASS0, MAC_RF_CONTROL0, MAC_PWR_PIN_CFG; | 8535 | u32 MAC_RF_BYPASS0, MAC_RF_CONTROL0, MAC_PWR_PIN_CFG; |
| 8536 | u32 maccfg; | 8536 | u32 maccfg; |
| @@ -8591,7 +8591,7 @@ static void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev) · 54 unmodified lines | |||
| 8591 | if (bytevalue > 128) | 8591 | if (bytevalue > 128) |
| 8592 | d1 = bytevalue - 256; | 8592 | d1 = bytevalue - 256; |
| 8593 | else | 8593 | else |
| 8594 | d1 = (char)bytevalue; | 8594 | d1 = (s8)bytevalue; |
| 8595 | rt2800_bbp_write(rt2x00dev, 22, 0x0); | 8595 | rt2800_bbp_write(rt2x00dev, 22, 0x0); |
| 8596 | rt2800_rfcsr_write_bank(rt2x00dev, 0, 35, 0x01); | 8596 | rt2800_rfcsr_write_bank(rt2x00dev, 0, 35, 0x01); |
| 8597 | 8597 | ||
| @@ -8601,7 +8601,7 @@ static void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev) · 3 unmodified lines | |||
| 8601 | if (bytevalue > 128) | 8601 | if (bytevalue > 128) |
| 8602 | d2 = bytevalue - 256; | 8602 | d2 = bytevalue - 256; |
| 8603 | else | 8603 | else |
| 8604 | d2 = (char)bytevalue; | 8604 | d2 = (s8)bytevalue; |
| 8605 | rt2800_bbp_write(rt2x00dev, 22, 0x0); | 8605 | rt2800_bbp_write(rt2x00dev, 22, 0x0); |
| 8606 | 8606 | ||
| 8607 | rcalcode = rt2800_calcrcalibrationcode(rt2x00dev, d1, d2); | 8607 | rcalcode = rt2800_calcrcalibrationcode(rt2x00dev, d1, d2); |
| @@ -8703,7 +8703,7 @@ static void rt2800_rxdcoc_calibration(struct rt2x00_dev *rt2x00dev) · 95 unmodified lines | |||
| 8703 | static u32 rt2800_do_sqrt_accumulation(u32 si) | 8703 | static u32 rt2800_do_sqrt_accumulation(u32 si) |
| 8704 | { | 8704 | { |
| 8705 | u32 root, root_pre, bit; | 8705 | u32 root, root_pre, bit; |
| 8706 | char i; | 8706 | s8 i; |
| 8707 | 8707 | ||
| 8708 | bit = 1 << 15; | 8708 | bit = 1 << 15; |
| 8709 | root = 0; | 8709 | root = 0; |
| @@ -9330,11 +9330,11 @@ static void rt2800_loft_search(struct rt2x00_dev *rt2x00dev, u8 ch_idx, · 620 unmodified lines | |||
| 9330 | u8 alc_idx, u8 dc_result[][RF_ALC_NUM][2]) | 9330 | u8 alc_idx, u8 dc_result[][RF_ALC_NUM][2]) |
| 9331 | { | 9331 | { |
| 9332 | u32 p0 = 0, p1 = 0, pf = 0; | 9332 | u32 p0 = 0, p1 = 0, pf = 0; |
| 9333 | char idx0 = 0, idx1 = 0; | 9333 | s8 idx0 = 0, idx1 = 0; |
| 9334 | u8 idxf[] = {0x00, 0x00}; | 9334 | u8 idxf[] = {0x00, 0x00}; |
| 9335 | u8 ibit = 0x20; | 9335 | u8 ibit = 0x20; |
| 9336 | u8 iorq; | 9336 | u8 iorq; |
| 9337 | char bidx; | 9337 | s8 bidx; |
| 9338 | 9338 | ||
| 9339 | rt2800_bbp_write(rt2x00dev, 158, 0xb0); | 9339 | rt2800_bbp_write(rt2x00dev, 158, 0xb0); |
| 9340 | rt2800_bbp_write(rt2x00dev, 159, 0x80); | 9340 | rt2800_bbp_write(rt2x00dev, 159, 0x80); |
| @@ -9384,17 +9384,17 @@ static void rt2800_loft_search(struct rt2x00_dev *rt2x00dev, u8 ch_idx, · 43 unmodified lines | |||
| 9384 | static void rt2800_iq_search(struct rt2x00_dev *rt2x00dev, u8 ch_idx, u8 *ges, u8 *pes) | 9384 | static void rt2800_iq_search(struct rt2x00_dev *rt2x00dev, u8 ch_idx, u8 *ges, u8 *pes) |
| 9385 | { | 9385 | { |
| 9386 | u32 p0 = 0, p1 = 0, pf = 0; | 9386 | u32 p0 = 0, p1 = 0, pf = 0; |
| 9387 | char perr = 0, gerr = 0, iq_err = 0; | 9387 | s8 perr = 0, gerr = 0, iq_err = 0; |
| 9388 | char pef = 0, gef = 0; | 9388 | s8 pef = 0, gef = 0; |
| 9389 | char psta, pend; | 9389 | s8 psta, pend; |
| 9390 | char gsta, gend; | 9390 | s8 gsta, gend; |
| 9391 | 9391 | ||
| 9392 | u8 ibit = 0x20; | 9392 | u8 ibit = 0x20; |
| 9393 | u8 first_search = 0x00, touch_neg_max = 0x00; | 9393 | u8 first_search = 0x00, touch_neg_max = 0x00; |
| 9394 | char idx0 = 0, idx1 = 0; | 9394 | s8 idx0 = 0, idx1 = 0; |
| 9395 | u8 gop; | 9395 | u8 gop; |
| 9396 | u8 bbp = 0; | 9396 | u8 bbp = 0; |
| 9397 | char bidx; | 9397 | s8 bidx; |
| 9398 | 9398 | ||
| 9399 | for (bidx = 5; bidx >= 1; bidx--) { | 9399 | for (bidx = 5; bidx >= 1; bidx--) { |
| 9400 | for (gop = 0; gop < 2; gop++) { | 9400 | for (gop = 0; gop < 2; gop++) { |
| @@ -10043,11 +10043,11 @@ static int rt2800_rf_lp_config(struct rt2x00_dev *rt2x00dev, bool btxcal) · 642 unmodified lines | |||
| 10043 | return 0; | 10043 | return 0; |
| 10044 | } | 10044 | } |
| 10045 | 10045 | ||
| 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) |
| 10047 | { | 10047 | { |
| 10048 | unsigned int cnt; | 10048 | unsigned int cnt; |
| 10049 | u8 bbp_val; | 10049 | u8 bbp_val; |
| 10050 | char cal_val; | 10050 | s8 cal_val; |
| 10051 | 10051 | ||
| 10052 | rt2800_bbp_dcoc_write(rt2x00dev, 0, 0x82); | 10052 | rt2800_bbp_dcoc_write(rt2x00dev, 0, 0x82); |
| 10053 | 10053 | ||
| @@ -10079,7 +10079,7 @@ static void rt2800_bw_filter_calibration(struct rt2x00_dev *rt2x00dev, · 25 unmodified lines | |||
| 10079 | u8 rx_filter_target_20m = 0x27, rx_filter_target_40m = 0x31; | 10079 | u8 rx_filter_target_20m = 0x27, rx_filter_target_40m = 0x31; |
| 10080 | int loop = 0, is_ht40, cnt; | 10080 | int loop = 0, is_ht40, cnt; |
| 10081 | u8 bbp_val, rf_val; | 10081 | u8 bbp_val, rf_val; |
| 10082 | char cal_r32_init, cal_r32_val, cal_diff; | 10082 | s8 cal_r32_init, cal_r32_val, cal_diff; |
| 10083 | u8 saverfb5r00, saverfb5r01, saverfb5r03, saverfb5r04, saverfb5r05; | 10083 | u8 saverfb5r00, saverfb5r01, saverfb5r03, saverfb5r04, saverfb5r05; |
| 10084 | u8 saverfb5r06, saverfb5r07; | 10084 | u8 saverfb5r06, saverfb5r07; |
| 10085 | u8 saverfb5r08, saverfb5r17, saverfb5r18, saverfb5r19, saverfb5r20; | 10085 | u8 saverfb5r08, saverfb5r17, saverfb5r18, saverfb5r19, saverfb5r20; |
| @@ -11550,9 +11550,9 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 1464 unmodified lines | |||
| 11550 | { | 11550 | { |
| 11551 | struct hw_mode_spec *spec = &rt2x00dev->spec; | 11551 | struct hw_mode_spec *spec = &rt2x00dev->spec; |
| 11552 | struct channel_info *info; | 11552 | struct channel_info *info; |
| 11553 | char *default_power1; | 11553 | s8 *default_power1; |
| 11554 | char *default_power2; | 11554 | s8 *default_power2; |
| 11555 | char *default_power3; | 11555 | s8 *default_power3; |
| 11556 | unsigned int i, tx_chains, rx_chains; | 11556 | unsigned int i, tx_chains, rx_chains; |
| 11557 | u32 reg; | 11557 | u32 reg; |
| 11558 | 11558 | ||
| @@ -32,10 +32,10 @@ struct rf_reg_pair { · 31 unmodified lines | |||
| 32 | struct rt2800_drv_data { | 32 | struct rt2800_drv_data { |
| 33 | u8 calibration_bw20; | 33 | u8 calibration_bw20; |
| 34 | u8 calibration_bw40; | 34 | u8 calibration_bw40; |
| 35 | char rx_calibration_bw20; | 35 | s8 rx_calibration_bw20; |
| 36 | char rx_calibration_bw40; | 36 | s8 rx_calibration_bw40; |
| 37 | char tx_calibration_bw20; | 37 | s8 tx_calibration_bw20; |
| 38 | char tx_calibration_bw40; | 38 | s8 tx_calibration_bw40; |
| 39 | u8 bbp25; | 39 | u8 bbp25; |
| 40 | u8 bbp26; | 40 | u8 bbp26; |
| 41 | u8 txmixer_gain_24g; | 41 | u8 txmixer_gain_24g; |
| @@ -117,12 +117,12 @@ int rt2x00usb_vendor_request_buff(struct rt2x00_dev *rt2x00dev, · 116 unmodified lines | |||
| 117 | const u16 buffer_length) | 117 | const u16 buffer_length) |
| 118 | { | 118 | { |
| 119 | int status = 0; | 119 | int status = 0; |
| 120 | unsigned char *tb; | 120 | u8 *tb; |
| 121 | u16 off, len, bsize; | 121 | u16 off, len, bsize; |
| 122 | 122 | ||
| 123 | mutex_lock(&rt2x00dev->csr_mutex); | 123 | mutex_lock(&rt2x00dev->csr_mutex); |
| 124 | 124 | ||
| 125 | tb = (char *)buffer; | 125 | tb = (u8 *)buffer; |
| 126 | off = offset; | 126 | off = offset; |
| 127 | len = buffer_length; | 127 | len = buffer_length; |
| 128 | while (len && !status) { | 128 | while (len && !status) { |
| @@ -215,7 +215,7 @@ void rt2x00usb_register_read_async(struct rt2x00_dev *rt2x00dev, · 86 unmodified lines | |||
| 215 | rd->cr.wLength = cpu_to_le16(sizeof(u32)); | 215 | rd->cr.wLength = cpu_to_le16(sizeof(u32)); |
| 216 | 216 | ||
| 217 | usb_fill_control_urb(urb, usb_dev, usb_rcvctrlpipe(usb_dev, 0), | 217 | usb_fill_control_urb(urb, usb_dev, usb_rcvctrlpipe(usb_dev, 0), |
| 218 | (unsigned char *)(&rd->cr), &rd->reg, sizeof(rd->reg), | 218 | (u8 *)(&rd->cr), &rd->reg, sizeof(rd->reg), |
| 219 | rt2x00usb_register_read_async_cb, rd); | 219 | rt2x00usb_register_read_async_cb, rd); |
| 220 | usb_anchor_urb(urb, rt2x00dev->anchor); | 220 | usb_anchor_urb(urb, rt2x00dev->anchor); |
| 221 | if (usb_submit_urb(urb, GFP_ATOMIC) < 0) { | 221 | if (usb_submit_urb(urb, GFP_ATOMIC) < 0) { |
| @@ -1709,7 +1709,7 @@ static int rt61pci_set_state(struct rt2x00_dev *rt2x00dev, enum dev_state state) · 1708 unmodified lines | |||
| 1709 | { | 1709 | { |
| 1710 | u32 reg, reg2; | 1710 | u32 reg, reg2; |
| 1711 | unsigned int i; | 1711 | unsigned int i; |
| 1712 | char put_to_sleep; | 1712 | bool put_to_sleep; |
| 1713 | 1713 | ||
| 1714 | put_to_sleep = (state != STATE_AWAKE); | 1714 | put_to_sleep = (state != STATE_AWAKE); |
| 1715 | 1715 | ||
| @@ -2656,7 +2656,7 @@ static int rt61pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 940 unmodified lines | |||
| 2656 | { | 2656 | { |
| 2657 | struct hw_mode_spec *spec = &rt2x00dev->spec; | 2657 | struct hw_mode_spec *spec = &rt2x00dev->spec; |
| 2658 | struct channel_info *info; | 2658 | struct channel_info *info; |
| 2659 | char *tx_power; | 2659 | u8 *tx_power; |
| 2660 | unsigned int i; | 2660 | unsigned int i; |
| 2661 | 2661 | ||
| 2662 | /* | 2662 | /* |
| @@ -1484,6 +1484,6 @@ struct hw_pairwise_ta_entry { · 1483 unmodified lines | |||
| 1484 | (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) | 1484 | (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) |
| 1485 | 1485 | ||
| 1486 | #define TXPOWER_TO_DEV(__txpower) \ | 1486 | #define TXPOWER_TO_DEV(__txpower) \ |
| 1487 | clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER) | 1487 | clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER) |
| 1488 | 1488 | ||
| 1489 | #endif /* RT61PCI_H */ | 1489 | #endif /* RT61PCI_H */ |
| @@ -1378,7 +1378,7 @@ static int rt73usb_set_state(struct rt2x00_dev *rt2x00dev, enum dev_state state) · 1377 unmodified lines | |||
| 1378 | { | 1378 | { |
| 1379 | u32 reg, reg2; | 1379 | u32 reg, reg2; |
| 1380 | unsigned int i; | 1380 | unsigned int i; |
| 1381 | char put_to_sleep; | 1381 | bool put_to_sleep; |
| 1382 | 1382 | ||
| 1383 | put_to_sleep = (state != STATE_AWAKE); | 1383 | put_to_sleep = (state != STATE_AWAKE); |
| 1384 | 1384 | ||
| @@ -2090,7 +2090,7 @@ static int rt73usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 705 unmodified lines | |||
| 2090 | { | 2090 | { |
| 2091 | struct hw_mode_spec *spec = &rt2x00dev->spec; | 2091 | struct hw_mode_spec *spec = &rt2x00dev->spec; |
| 2092 | struct channel_info *info; | 2092 | struct channel_info *info; |
| 2093 | char *tx_power; | 2093 | u8 *tx_power; |
| 2094 | unsigned int i; | 2094 | unsigned int i; |
| 2095 | 2095 | ||
| 2096 | /* | 2096 | /* |
| @@ -1063,6 +1063,6 @@ struct hw_pairwise_ta_entry { · 1062 unmodified lines | |||
| 1063 | (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) | 1063 | (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) |
| 1064 | 1064 | ||
| 1065 | #define TXPOWER_TO_DEV(__txpower) \ | 1065 | #define TXPOWER_TO_DEV(__txpower) \ |
| 1066 | clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER) | 1066 | clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER) |
| 1067 | 1067 | ||
| 1068 | #endif /* RT73USB_H */ | 1068 | #endif /* RT73USB_H */ |
| @@ -94,7 +94,7 @@ config RPMSG_WWAN_CTRL · 93 unmodified lines | |||
| 94 | 94 | ||
| 95 | config IOSM | 95 | config IOSM |
| 96 | tristate "IOSM Driver for Intel M.2 WWAN Device" | 96 | tristate "IOSM Driver for Intel M.2 WWAN Device" |
| 97 | depends on INTEL_IOMMU | 97 | depends on PCI |
| 98 | select NET_DEVLINK | 98 | select NET_DEVLINK |
| 99 | select RELAY if WWAN_DEBUGFS | 99 | select RELAY if WWAN_DEBUGFS |
| 100 | help | 100 | help |
| @@ -2,6 +2,7 @@ · 1 unmodified line | |||
| 2 | /* | 2 | /* |
| 3 | * Copyright (C) 2020-2021 Intel Corporation. | 3 | * Copyright (C) 2020-2021 Intel Corporation. |
| 4 | */ | 4 | */ |
| 5 | #include <linux/vmalloc.h> | ||
| 5 | 6 | ||
| 6 | #include "iosm_ipc_coredump.h" | 7 | #include "iosm_ipc_coredump.h" |
| 7 | 8 | ||
| @@ -2,6 +2,7 @@ · 1 unmodified line | |||
| 2 | /* | 2 | /* |
| 3 | * Copyright (C) 2020-2021 Intel Corporation. | 3 | * Copyright (C) 2020-2021 Intel Corporation. |
| 4 | */ | 4 | */ |
| 5 | #include <linux/vmalloc.h> | ||
| 5 | 6 | ||
| 6 | #include "iosm_ipc_chnl_cfg.h" | 7 | #include "iosm_ipc_chnl_cfg.h" |
| 7 | #include "iosm_ipc_coredump.h" | 8 | #include "iosm_ipc_coredump.h" |
| @@ -91,6 +91,14 @@ void ipc_imem_wwan_channel_init(struct iosm_imem *ipc_imem, · 90 unmodified lines | |||
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | ipc_chnl_cfg_get(&chnl_cfg, ipc_imem->nr_of_channels); | 93 | ipc_chnl_cfg_get(&chnl_cfg, ipc_imem->nr_of_channels); |
| 94 | |||
| 95 | if (ipc_imem->mmio->mux_protocol == MUX_AGGREGATION && | ||
| 96 | ipc_imem->nr_of_channels == IPC_MEM_IP_CHL_ID_0) { | ||
| 97 | chnl_cfg.ul_nr_of_entries = IPC_MEM_MAX_TDS_MUX_AGGR_UL; | ||
| 98 | chnl_cfg.dl_nr_of_entries = IPC_MEM_MAX_TDS_MUX_AGGR_DL; | ||
| 99 | chnl_cfg.dl_buf_size = IPC_MEM_MAX_ADB_BUF_SIZE; | ||
| 100 | } | ||
| 101 | |||
| 94 | ipc_imem_channel_init(ipc_imem, IPC_CTYPE_WWAN, chnl_cfg, | 102 | ipc_imem_channel_init(ipc_imem, IPC_CTYPE_WWAN, chnl_cfg, |
| 95 | IRQ_MOD_OFF); | 103 | IRQ_MOD_OFF); |
| 96 | 104 | ||
| @@ -10,6 +10,7 @@ · 9 unmodified lines | |||
| 10 | 10 | ||
| 11 | #define IPC_MEM_MAX_UL_DG_ENTRIES 100 | 11 | #define IPC_MEM_MAX_UL_DG_ENTRIES 100 |
| 12 | #define IPC_MEM_MAX_TDS_MUX_AGGR_UL 60 | 12 | #define IPC_MEM_MAX_TDS_MUX_AGGR_UL 60 |
| 13 | #define IPC_MEM_MAX_TDS_MUX_AGGR_DL 60 | ||
| 13 | 14 | ||
| 14 | #define IPC_MEM_MAX_ADB_BUF_SIZE (16 * 1024) | 15 | #define IPC_MEM_MAX_ADB_BUF_SIZE (16 * 1024) |
| 15 | #define IPC_MEM_MAX_UL_ADB_BUF_SIZE IPC_MEM_MAX_ADB_BUF_SIZE | 16 | #define IPC_MEM_MAX_UL_ADB_BUF_SIZE IPC_MEM_MAX_ADB_BUF_SIZE |
| @@ -232,6 +232,7 @@ static void ipc_pcie_config_init(struct iosm_pcie *ipc_pcie) · 231 unmodified lines | |||
| 232 | */ | 232 | */ |
| 233 | static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev) | 233 | static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev) |
| 234 | { | 234 | { |
| 235 | enum ipc_pcie_sleep_state sleep_state = IPC_PCIE_D0L12; | ||
| 235 | union acpi_object *object; | 236 | union acpi_object *object; |
| 236 | acpi_handle handle_acpi; | 237 | acpi_handle handle_acpi; |
| 237 | 238 | ||
| @@ -242,18 +243,23 @@ static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev) · 4 unmodified lines | |||
| 242 | } | 243 | } |
| 243 | 244 | ||
| 244 | object = acpi_evaluate_dsm(handle_acpi, &wwan_acpi_guid, 0, 3, NULL); | 245 | object = acpi_evaluate_dsm(handle_acpi, &wwan_acpi_guid, 0, 3, NULL); |
| 246 | if (!object) | ||
| 247 | goto default_ret; | ||
| 248 | |||
| 249 | if (object->integer.value == 3) | ||
| 250 | sleep_state = IPC_PCIE_D3L2; | ||
| 245 | 251 | ||
| 246 | if (object && object->integer.value == 3) | 252 | kfree(object); |
| 247 | return IPC_PCIE_D3L2; | ||
| 248 | 253 | ||
| 249 | default_ret: | 254 | default_ret: |
| 250 | return IPC_PCIE_D0L12; | 255 | return sleep_state; |
| 251 | } | 256 | } |
| 252 | 257 | ||
| 253 | static int ipc_pcie_probe(struct pci_dev *pci, | 258 | static int ipc_pcie_probe(struct pci_dev *pci, |
| 254 | const struct pci_device_id *pci_id) | 259 | const struct pci_device_id *pci_id) |
| 255 | { | 260 | { |
| 256 | struct iosm_pcie *ipc_pcie = kzalloc(sizeof(*ipc_pcie), GFP_KERNEL); | 261 | struct iosm_pcie *ipc_pcie = kzalloc(sizeof(*ipc_pcie), GFP_KERNEL); |
| 262 | int ret; | ||
| 257 | 263 | ||
| 258 | pr_debug("Probing device 0x%X from the vendor 0x%X", pci_id->device, | 264 | pr_debug("Probing device 0x%X from the vendor 0x%X", pci_id->device, |
| 259 | pci_id->vendor); | 265 | pci_id->vendor); |
| @@ -286,6 +292,12 @@ static int ipc_pcie_probe(struct pci_dev *pci, · 26 unmodified lines | |||
| 286 | goto pci_enable_fail; | 292 | goto pci_enable_fail; |
| 287 | } | 293 | } |
| 288 | 294 | ||
| 295 | ret = dma_set_mask(ipc_pcie->dev, DMA_BIT_MASK(64)); | ||
| 296 | if (ret) { | ||
| 297 | dev_err(ipc_pcie->dev, "Could not set PCI DMA mask: %d", ret); | ||
| 298 | return ret; | ||
| 299 | } | ||
| 300 | |||
| 289 | ipc_pcie_config_aspm(ipc_pcie); | 301 | ipc_pcie_config_aspm(ipc_pcie); |
| 290 | dev_dbg(ipc_pcie->dev, "PCIe device enabled."); | 302 | dev_dbg(ipc_pcie->dev, "PCIe device enabled."); |
| 291 | 303 | ||
| @@ -40,13 +40,11 @@ struct iosm_netdev_priv { · 39 unmodified lines | |||
| 40 | * @ipc_imem: Pointer to imem data-struct | 40 | * @ipc_imem: Pointer to imem data-struct |
| 41 | * @sub_netlist: List of active netdevs | 41 | * @sub_netlist: List of active netdevs |
| 42 | * @dev: Pointer device structure | 42 | * @dev: Pointer device structure |
| 43 | * @if_mutex: Mutex used for add and remove interface id | ||
| 44 | */ | 43 | */ |
| 45 | struct iosm_wwan { | 44 | struct iosm_wwan { |
| 46 | struct iosm_imem *ipc_imem; | 45 | struct iosm_imem *ipc_imem; |
| 47 | struct iosm_netdev_priv __rcu *sub_netlist[IP_MUX_SESSION_END + 1]; | 46 | struct iosm_netdev_priv __rcu *sub_netlist[IP_MUX_SESSION_END + 1]; |
| 48 | struct device *dev; | 47 | struct device *dev; |
| 49 | struct mutex if_mutex; /* Mutex used for add and remove interface id */ | ||
| 50 | }; | 48 | }; |
| 51 | 49 | ||
| 52 | /* Bring-up the wwan net link */ | 50 | /* Bring-up the wwan net link */ |
| @@ -55,14 +53,11 @@ static int ipc_wwan_link_open(struct net_device *netdev) · 2 unmodified lines | |||
| 55 | struct iosm_netdev_priv *priv = wwan_netdev_drvpriv(netdev); | 53 | struct iosm_netdev_priv *priv = wwan_netdev_drvpriv(netdev); |
| 56 | struct iosm_wwan *ipc_wwan = priv->ipc_wwan; | 54 | struct iosm_wwan *ipc_wwan = priv->ipc_wwan; |
| 57 | int if_id = priv->if_id; | 55 | int if_id = priv->if_id; |
| 58 | int ret; | ||
| 59 | 56 | ||
| 60 | if (if_id < IP_MUX_SESSION_START || | 57 | if (if_id < IP_MUX_SESSION_START || |
| 61 | if_id >= ARRAY_SIZE(ipc_wwan->sub_netlist)) | 58 | if_id >= ARRAY_SIZE(ipc_wwan->sub_netlist)) |
| 62 | return -EINVAL; | 59 | return -EINVAL; |
| 63 | 60 | ||
| 64 | mutex_lock(&ipc_wwan->if_mutex); | ||
| 65 | |||
| 66 | /* get channel id */ | 61 | /* get channel id */ |
| 67 | priv->ch_id = ipc_imem_sys_wwan_open(ipc_wwan->ipc_imem, if_id); | 62 | priv->ch_id = ipc_imem_sys_wwan_open(ipc_wwan->ipc_imem, if_id); |
| 68 | 63 | ||
| @@ -70,8 +65,7 @@ static int ipc_wwan_link_open(struct net_device *netdev) · 1 unmodified line | |||
| 70 | dev_err(ipc_wwan->dev, | 65 | dev_err(ipc_wwan->dev, |
| 71 | "cannot connect wwan0 & id %d to the IPC mem layer", | 66 | "cannot connect wwan0 & id %d to the IPC mem layer", |
| 72 | if_id); | 67 | if_id); |
| 73 | ret = -ENODEV; | 68 | return -ENODEV; |
| 74 | goto out; | ||
| 75 | } | 69 | } |
| 76 | 70 | ||
| 77 | /* enable tx path, DL data may follow */ | 71 | /* enable tx path, DL data may follow */ |
| @@ -80,10 +74,7 @@ static int ipc_wwan_link_open(struct net_device *netdev) · 2 unmodified lines | |||
| 80 | dev_dbg(ipc_wwan->dev, "Channel id %d allocated to if_id %d", | 74 | dev_dbg(ipc_wwan->dev, "Channel id %d allocated to if_id %d", |
| 81 | priv->ch_id, priv->if_id); | 75 | priv->ch_id, priv->if_id); |
| 82 | 76 | ||
| 83 | ret = 0; | 77 | return 0; |
| 84 | out: | ||
| 85 | mutex_unlock(&ipc_wwan->if_mutex); | ||
| 86 | return ret; | ||
| 87 | } | 78 | } |
| 88 | 79 | ||
| 89 | /* Bring-down the wwan net link */ | 80 | /* Bring-down the wwan net link */ |
| @@ -93,11 +84,9 @@ static int ipc_wwan_link_stop(struct net_device *netdev) · 3 unmodified lines | |||
| 93 | 84 | ||
| 94 | netif_stop_queue(netdev); | 85 | netif_stop_queue(netdev); |
| 95 | 86 | ||
| 96 | mutex_lock(&priv->ipc_wwan->if_mutex); | ||
| 97 | ipc_imem_sys_wwan_close(priv->ipc_wwan->ipc_imem, priv->if_id, | 87 | ipc_imem_sys_wwan_close(priv->ipc_wwan->ipc_imem, priv->if_id, |
| 98 | priv->ch_id); | 88 | priv->ch_id); |
| 99 | priv->ch_id = -1; | 89 | priv->ch_id = -1; |
| 100 | mutex_unlock(&priv->ipc_wwan->if_mutex); | ||
| 101 | 90 | ||
| 102 | return 0; | 91 | return 0; |
| 103 | } | 92 | } |
| @@ -168,6 +157,7 @@ static void ipc_wwan_setup(struct net_device *iosm_dev) · 64 unmodified lines | |||
| 168 | iosm_dev->max_mtu = ETH_MAX_MTU; | 157 | iosm_dev->max_mtu = ETH_MAX_MTU; |
| 169 | 158 | ||
| 170 | iosm_dev->flags = IFF_POINTOPOINT | IFF_NOARP; | 159 | iosm_dev->flags = IFF_POINTOPOINT | IFF_NOARP; |
| 160 | iosm_dev->needs_free_netdev = true; | ||
| 171 | 161 | ||
| 172 | iosm_dev->netdev_ops = &ipc_inm_ops; | 162 | iosm_dev->netdev_ops = &ipc_inm_ops; |
| 173 | } | 163 | } |
| @@ -189,26 +179,17 @@ static int ipc_wwan_newlink(void *ctxt, struct net_device *dev, · 15 unmodified lines | |||
| 189 | priv->netdev = dev; | 179 | priv->netdev = dev; |
| 190 | priv->ipc_wwan = ipc_wwan; | 180 | priv->ipc_wwan = ipc_wwan; |
| 191 | 181 | ||
| 192 | mutex_lock(&ipc_wwan->if_mutex); | 182 | if (rcu_access_pointer(ipc_wwan->sub_netlist[if_id])) |
| 193 | if (rcu_access_pointer(ipc_wwan->sub_netlist[if_id])) { | 183 | return -EBUSY; |
| 194 | err = -EBUSY; | ||
| 195 | goto out_unlock; | ||
| 196 | } | ||
| 197 | 184 | ||
| 198 | err = register_netdevice(dev); | 185 | err = register_netdevice(dev); |
| 199 | if (err) | 186 | if (err) |
| 200 | goto out_unlock; | 187 | return err; |
| 201 | 188 | ||
| 202 | rcu_assign_pointer(ipc_wwan->sub_netlist[if_id], priv); | 189 | rcu_assign_pointer(ipc_wwan->sub_netlist[if_id], priv); |
| 203 | mutex_unlock(&ipc_wwan->if_mutex); | ||
| 204 | |||
| 205 | netif_device_attach(dev); | 190 | netif_device_attach(dev); |
| 206 | 191 | ||
| 207 | return 0; | 192 | return 0; |
| 208 | |||
| 209 | out_unlock: | ||
| 210 | mutex_unlock(&ipc_wwan->if_mutex); | ||
| 211 | return err; | ||
| 212 | } | 193 | } |
| 213 | 194 | ||
| 214 | static void ipc_wwan_dellink(void *ctxt, struct net_device *dev, | 195 | 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 | |||
| 222 | if_id >= ARRAY_SIZE(ipc_wwan->sub_netlist))) | 203 | if_id >= ARRAY_SIZE(ipc_wwan->sub_netlist))) |
| 223 | return; | 204 | return; |
| 224 | 205 | ||
| 225 | mutex_lock(&ipc_wwan->if_mutex); | ||
| 226 | |||
| 227 | if (WARN_ON(rcu_access_pointer(ipc_wwan->sub_netlist[if_id]) != priv)) | 206 | if (WARN_ON(rcu_access_pointer(ipc_wwan->sub_netlist[if_id]) != priv)) |
| 228 | goto unlock; | 207 | return; |
| 229 | 208 | ||
| 230 | RCU_INIT_POINTER(ipc_wwan->sub_netlist[if_id], NULL); | 209 | RCU_INIT_POINTER(ipc_wwan->sub_netlist[if_id], NULL); |
| 231 | /* unregistering includes synchronize_net() */ | 210 | /* unregistering includes synchronize_net() */ |
| 232 | unregister_netdevice_queue(dev, head); | 211 | unregister_netdevice_queue(dev, head); |
| 233 | |||
| 234 | unlock: | ||
| 235 | mutex_unlock(&ipc_wwan->if_mutex); | ||
| 236 | } | 212 | } |
| 237 | 213 | ||
| 238 | static const struct wwan_ops iosm_wwan_ops = { | 214 | 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 | |||
| 323 | ipc_wwan->dev = dev; | 299 | ipc_wwan->dev = dev; |
| 324 | ipc_wwan->ipc_imem = ipc_imem; | 300 | ipc_wwan->ipc_imem = ipc_imem; |
| 325 | 301 | ||
| 326 | mutex_init(&ipc_wwan->if_mutex); | ||
| 327 | |||
| 328 | /* WWAN core will create a netdev for the default IP MUX channel */ | 302 | /* WWAN core will create a netdev for the default IP MUX channel */ |
| 329 | if (wwan_register_ops(ipc_wwan->dev, &iosm_wwan_ops, ipc_wwan, | 303 | if (wwan_register_ops(ipc_wwan->dev, &iosm_wwan_ops, ipc_wwan, |
| 330 | IP_MUX_SESSION_DEFAULT)) { | 304 | IP_MUX_SESSION_DEFAULT)) { |
| 331 | mutex_destroy(&ipc_wwan->if_mutex); | ||
| 332 | kfree(ipc_wwan); | 305 | kfree(ipc_wwan); |
| 333 | return NULL; | 306 | return NULL; |
| 334 | } | 307 | } |
| @@ -341,7 +314,5 @@ void ipc_wwan_deinit(struct iosm_wwan *ipc_wwan) · 6 unmodified lines | |||
| 341 | /* This call will remove all child netdev(s) */ | 314 | /* This call will remove all child netdev(s) */ |
| 342 | wwan_unregister_ops(ipc_wwan->dev); | 315 | wwan_unregister_ops(ipc_wwan->dev); |
| 343 | 316 | ||
| 344 | mutex_destroy(&ipc_wwan->if_mutex); | ||
| 345 | |||
| 346 | kfree(ipc_wwan); | 317 | kfree(ipc_wwan); |
| 347 | } | 318 | } |
| @@ -582,6 +582,7 @@ static void mhi_mbim_setup(struct net_device *ndev) · 581 unmodified lines | |||
| 582 | ndev->min_mtu = ETH_MIN_MTU; | 582 | ndev->min_mtu = ETH_MIN_MTU; |
| 583 | ndev->max_mtu = MHI_MAX_BUF_SZ - ndev->needed_headroom; | 583 | ndev->max_mtu = MHI_MAX_BUF_SZ - ndev->needed_headroom; |
| 584 | ndev->tx_queue_len = 1000; | 584 | ndev->tx_queue_len = 1000; |
| 585 | ndev->needs_free_netdev = true; | ||
| 585 | } | 586 | } |
| 586 | 587 | ||
| 587 | static const struct wwan_ops mhi_mbim_wwan_ops = { | 588 | static const struct wwan_ops mhi_mbim_wwan_ops = { |
| @@ -675,6 +675,7 @@ void nvme_init_request(struct request *req, struct nvme_command *cmd) · 674 unmodified lines | |||
| 675 | if (req->mq_hctx->type == HCTX_TYPE_POLL) | 675 | if (req->mq_hctx->type == HCTX_TYPE_POLL) |
| 676 | req->cmd_flags |= REQ_POLLED; | 676 | req->cmd_flags |= REQ_POLLED; |
| 677 | nvme_clear_nvme_request(req); | 677 | nvme_clear_nvme_request(req); |
| 678 | req->rq_flags |= RQF_QUIET; | ||
| 678 | memcpy(nvme_req(req)->cmd, cmd, sizeof(*cmd)); | 679 | memcpy(nvme_req(req)->cmd, cmd, sizeof(*cmd)); |
| 679 | } | 680 | } |
| 680 | EXPORT_SYMBOL_GPL(nvme_init_request); | 681 | 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 | |||
| 1037 | goto out; | 1038 | goto out; |
| 1038 | } | 1039 | } |
| 1039 | 1040 | ||
| 1040 | req->rq_flags |= RQF_QUIET; | ||
| 1041 | ret = nvme_execute_rq(req, at_head); | 1041 | ret = nvme_execute_rq(req, at_head); |
| 1042 | if (result && ret >= 0) | 1042 | if (result && ret >= 0) |
| 1043 | *result = nvme_req(req)->result; | 1043 | *result = nvme_req(req)->result; |
| @@ -1227,7 +1227,6 @@ static void nvme_keep_alive_work(struct work_struct *work) · 183 unmodified lines | |||
| 1227 | rq->timeout = ctrl->kato * HZ; | 1227 | rq->timeout = ctrl->kato * HZ; |
| 1228 | rq->end_io = nvme_keep_alive_end_io; | 1228 | rq->end_io = nvme_keep_alive_end_io; |
| 1229 | rq->end_io_data = ctrl; | 1229 | rq->end_io_data = ctrl; |
| 1230 | rq->rq_flags |= RQF_QUIET; | ||
| 1231 | blk_execute_rq_nowait(rq, false); | 1230 | blk_execute_rq_nowait(rq, false); |
| 1232 | } | 1231 | } |
| 1233 | 1232 | ||
| @@ -1436,7 +1436,6 @@ static enum blk_eh_timer_return nvme_timeout(struct request *req) · 1435 unmodified lines | |||
| 1436 | 1436 | ||
| 1437 | abort_req->end_io = abort_endio; | 1437 | abort_req->end_io = abort_endio; |
| 1438 | abort_req->end_io_data = NULL; | 1438 | abort_req->end_io_data = NULL; |
| 1439 | abort_req->rq_flags |= RQF_QUIET; | ||
| 1440 | blk_execute_rq_nowait(abort_req, false); | 1439 | blk_execute_rq_nowait(abort_req, false); |
| 1441 | 1440 | ||
| 1442 | /* | 1441 | /* |
| @@ -2490,7 +2489,6 @@ static int nvme_delete_queue(struct nvme_queue *nvmeq, u8 opcode) · 1047 unmodified lines | |||
| 2490 | req->end_io_data = nvmeq; | 2489 | req->end_io_data = nvmeq; |
| 2491 | 2490 | ||
| 2492 | init_completion(&nvmeq->delete_done); | 2491 | init_completion(&nvmeq->delete_done); |
| 2493 | req->rq_flags |= RQF_QUIET; | ||
| 2494 | blk_execute_rq_nowait(req, false); | 2492 | blk_execute_rq_nowait(req, false); |
| 2495 | return 0; | 2493 | return 0; |
| 2496 | } | 2494 | } |
| @@ -1215,6 +1215,7 @@ static ssize_t nvmet_subsys_attr_model_store_locked(struct nvmet_subsys *subsys, · 1214 unmodified lines | |||
| 1215 | const char *page, size_t count) | 1215 | const char *page, size_t count) |
| 1216 | { | 1216 | { |
| 1217 | int pos = 0, len; | 1217 | int pos = 0, len; |
| 1218 | char *val; | ||
| 1218 | 1219 | ||
| 1219 | if (subsys->subsys_discovered) { | 1220 | if (subsys->subsys_discovered) { |
| 1220 | pr_err("Can't set model number. %s is already assigned\n", | 1221 | pr_err("Can't set model number. %s is already assigned\n", |
| @@ -1237,9 +1238,11 @@ static ssize_t nvmet_subsys_attr_model_store_locked(struct nvmet_subsys *subsys, · 16 unmodified lines | |||
| 1237 | return -EINVAL; | 1238 | return -EINVAL; |
| 1238 | } | 1239 | } |
| 1239 | 1240 | ||
| 1240 | subsys->model_number = kmemdup_nul(page, len, GFP_KERNEL); | 1241 | val = kmemdup_nul(page, len, GFP_KERNEL); |
| 1241 | if (!subsys->model_number) | 1242 | if (!val) |
| 1242 | return -ENOMEM; | 1243 | return -ENOMEM; |
| 1244 | kfree(subsys->model_number); | ||
| 1245 | subsys->model_number = val; | ||
| 1243 | return count; | 1246 | return count; |
| 1244 | } | 1247 | } |
| 1245 | 1248 | ||
| @@ -1836,6 +1839,7 @@ static void nvmet_host_release(struct config_item *item) · 590 unmodified lines | |||
| 1836 | 1839 | ||
| 1837 | #ifdef CONFIG_NVME_TARGET_AUTH | 1840 | #ifdef CONFIG_NVME_TARGET_AUTH |
| 1838 | kfree(host->dhchap_secret); | 1841 | kfree(host->dhchap_secret); |
| 1842 | kfree(host->dhchap_ctrl_secret); | ||
| 1839 | #endif | 1843 | #endif |
| 1840 | kfree(host); | 1844 | kfree(host); |
| 1841 | } | 1845 | } |
| @@ -1614,7 +1614,7 @@ out: · 1613 unmodified lines | |||
| 1614 | 1614 | ||
| 1615 | static u32 hv_compose_msi_req_v1( | 1615 | static u32 hv_compose_msi_req_v1( |
| 1616 | struct pci_create_interrupt *int_pkt, const struct cpumask *affinity, | 1616 | struct pci_create_interrupt *int_pkt, const struct cpumask *affinity, |
| 1617 | u32 slot, u8 vector, u8 vector_count) | 1617 | u32 slot, u8 vector, u16 vector_count) |
| 1618 | { | 1618 | { |
| 1619 | int_pkt->message_type.type = PCI_CREATE_INTERRUPT_MESSAGE; | 1619 | int_pkt->message_type.type = PCI_CREATE_INTERRUPT_MESSAGE; |
| 1620 | int_pkt->wslot.slot = slot; | 1620 | int_pkt->wslot.slot = slot; |
| @@ -1642,7 +1642,7 @@ static int hv_compose_msi_req_get_cpu(const struct cpumask *affinity) · 21 unmodified lines | |||
| 1642 | 1642 | ||
| 1643 | static u32 hv_compose_msi_req_v2( | 1643 | static u32 hv_compose_msi_req_v2( |
| 1644 | struct pci_create_interrupt2 *int_pkt, const struct cpumask *affinity, | 1644 | struct pci_create_interrupt2 *int_pkt, const struct cpumask *affinity, |
| 1645 | u32 slot, u8 vector, u8 vector_count) | 1645 | u32 slot, u8 vector, u16 vector_count) |
| 1646 | { | 1646 | { |
| 1647 | int cpu; | 1647 | int cpu; |
| 1648 | 1648 | ||
| @@ -1661,7 +1661,7 @@ static u32 hv_compose_msi_req_v2( · 12 unmodified lines | |||
| 1661 | 1661 | ||
| 1662 | static u32 hv_compose_msi_req_v3( | 1662 | static u32 hv_compose_msi_req_v3( |
| 1663 | struct pci_create_interrupt3 *int_pkt, const struct cpumask *affinity, | 1663 | struct pci_create_interrupt3 *int_pkt, const struct cpumask *affinity, |
| 1664 | u32 slot, u32 vector, u8 vector_count) | 1664 | u32 slot, u32 vector, u16 vector_count) |
| 1665 | { | 1665 | { |
| 1666 | int cpu; | 1666 | int cpu; |
| 1667 | 1667 | ||
| @@ -1701,7 +1701,12 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · 33 unmodified lines | |||
| 1701 | struct compose_comp_ctxt comp; | 1701 | struct compose_comp_ctxt comp; |
| 1702 | struct tran_int_desc *int_desc; | 1702 | struct tran_int_desc *int_desc; |
| 1703 | struct msi_desc *msi_desc; | 1703 | struct msi_desc *msi_desc; |
| 1704 | u8 vector, vector_count; | 1704 | /* |
| 1705 | * vector_count should be u16: see hv_msi_desc, hv_msi_desc2 | ||
| 1706 | * and hv_msi_desc3. vector must be u32: see hv_msi_desc3. | ||
| 1707 | */ | ||
| 1708 | u16 vector_count; | ||
| 1709 | u32 vector; | ||
| 1705 | struct { | 1710 | struct { |
| 1706 | struct pci_packet pci_pkt; | 1711 | struct pci_packet pci_pkt; |
| 1707 | union { | 1712 | union { |
| @@ -1767,6 +1772,11 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · 59 unmodified lines | |||
| 1767 | vector_count = 1; | 1772 | vector_count = 1; |
| 1768 | } | 1773 | } |
| 1769 | 1774 | ||
| 1775 | /* | ||
| 1776 | * hv_compose_msi_req_v1 and v2 are for x86 only, meaning 'vector' | ||
| 1777 | * can't exceed u8. Cast 'vector' down to u8 for v1/v2 explicitly | ||
| 1778 | * for better readability. | ||
| 1779 | */ | ||
| 1770 | memset(&ctxt, 0, sizeof(ctxt)); | 1780 | memset(&ctxt, 0, sizeof(ctxt)); |
| 1771 | init_completion(&comp.comp_pkt.host_event); | 1781 | init_completion(&comp.comp_pkt.host_event); |
| 1772 | ctxt.pci_pkt.completion_func = hv_pci_compose_compl; | 1782 | ctxt.pci_pkt.completion_func = hv_pci_compose_compl; |
| @@ -1777,7 +1787,7 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · 4 unmodified lines | |||
| 1777 | size = hv_compose_msi_req_v1(&ctxt.int_pkts.v1, | 1787 | size = hv_compose_msi_req_v1(&ctxt.int_pkts.v1, |
| 1778 | dest, | 1788 | dest, |
| 1779 | hpdev->desc.win_slot.slot, | 1789 | hpdev->desc.win_slot.slot, |
| 1780 | vector, | 1790 | (u8)vector, |
| 1781 | vector_count); | 1791 | vector_count); |
| 1782 | break; | 1792 | break; |
| 1783 | 1793 | ||
| @@ -1786,7 +1796,7 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · 2 unmodified lines | |||
| 1786 | size = hv_compose_msi_req_v2(&ctxt.int_pkts.v2, | 1796 | size = hv_compose_msi_req_v2(&ctxt.int_pkts.v2, |
| 1787 | dest, | 1797 | dest, |
| 1788 | hpdev->desc.win_slot.slot, | 1798 | hpdev->desc.win_slot.slot, |
| 1789 | vector, | 1799 | (u8)vector, |
| 1790 | vector_count); | 1800 | vector_count); |
| 1791 | break; | 1801 | break; |
| 1792 | 1802 | ||
| @@ -2240,7 +2240,7 @@ static void qmp_combo_enable_autonomous_mode(struct qmp_phy *qphy) · 2239 unmodified lines | |||
| 2240 | static void qmp_combo_disable_autonomous_mode(struct qmp_phy *qphy) | 2240 | static void qmp_combo_disable_autonomous_mode(struct qmp_phy *qphy) |
| 2241 | { | 2241 | { |
| 2242 | const struct qmp_phy_cfg *cfg = qphy->cfg; | 2242 | const struct qmp_phy_cfg *cfg = qphy->cfg; |
| 2243 | void __iomem *pcs_usb = qphy->pcs_usb ?: qphy->pcs_usb; | 2243 | void __iomem *pcs_usb = qphy->pcs_usb ?: qphy->pcs; |
| 2244 | void __iomem *pcs_misc = qphy->pcs_misc; | 2244 | void __iomem *pcs_misc = qphy->pcs_misc; |
| 2245 | 2245 | ||
| 2246 | /* Disable i/o clamp_n on resume for normal mode */ | 2246 | /* Disable i/o clamp_n on resume for normal mode */ |
| @@ -280,7 +280,8 @@ static struct phy *mt7621_pcie_phy_of_xlate(struct device *dev, · 279 unmodified lines | |||
| 280 | } | 280 | } |
| 281 | 281 | ||
| 282 | static const struct soc_device_attribute mt7621_pci_quirks_match[] = { | 282 | static const struct soc_device_attribute mt7621_pci_quirks_match[] = { |
| 283 | { .soc_id = "mt7621", .revision = "E2" } | 283 | { .soc_id = "mt7621", .revision = "E2" }, |
| 284 | { /* sentinel */ } | ||
| 284 | }; | 285 | }; |
| 285 | 286 | ||
| 286 | static const struct regmap_config mt7621_pci_phy_regmap_config = { | 287 | static const struct regmap_config mt7621_pci_phy_regmap_config = { |
| @@ -710,6 +710,8 @@ static int stm32_usbphyc_probe(struct platform_device *pdev) · 709 unmodified lines | |||
| 710 | ret = of_property_read_u32(child, "reg", &index); | 710 | ret = of_property_read_u32(child, "reg", &index); |
| 711 | if (ret || index > usbphyc->nphys) { | 711 | if (ret || index > usbphyc->nphys) { |
| 712 | dev_err(&phy->dev, "invalid reg property: %d\n", ret); | 712 | dev_err(&phy->dev, "invalid reg property: %d\n", ret); |
| 713 | if (!ret) | ||
| 714 | ret = -EINVAL; | ||
| 713 | goto put_child; | 715 | goto put_child; |
| 714 | } | 716 | } |
| 715 | 717 | ||
| @@ -256,8 +256,8 @@ static int sp_usb_phy_probe(struct platform_device *pdev) · 255 unmodified lines | |||
| 256 | usbphy->moon4_res_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "moon4"); | 256 | usbphy->moon4_res_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "moon4"); |
| 257 | usbphy->moon4_regs = devm_ioremap(&pdev->dev, usbphy->moon4_res_mem->start, | 257 | usbphy->moon4_regs = devm_ioremap(&pdev->dev, usbphy->moon4_res_mem->start, |
| 258 | resource_size(usbphy->moon4_res_mem)); | 258 | resource_size(usbphy->moon4_res_mem)); |
| 259 | if (IS_ERR(usbphy->moon4_regs)) | 259 | if (!usbphy->moon4_regs) |
| 260 | return PTR_ERR(usbphy->moon4_regs); | 260 | return -ENOMEM; |
| 261 | 261 | ||
| 262 | usbphy->phy_clk = devm_clk_get(&pdev->dev, NULL); | 262 | usbphy->phy_clk = devm_clk_get(&pdev->dev, NULL); |
| 263 | if (IS_ERR(usbphy->phy_clk)) | 263 | if (IS_ERR(usbphy->phy_clk)) |
| @@ -1461,8 +1461,14 @@ EXPORT_SYMBOL_GPL(tegra_phy_xusb_utmi_port_reset); · 1460 unmodified lines | |||
| 1461 | 1461 | ||
| 1462 | void tegra_phy_xusb_utmi_pad_power_on(struct phy *phy) | 1462 | void tegra_phy_xusb_utmi_pad_power_on(struct phy *phy) |
| 1463 | { | 1463 | { |
| 1464 | struct tegra_xusb_lane *lane = phy_get_drvdata(phy); | 1464 | struct tegra_xusb_lane *lane; |
| 1465 | struct tegra_xusb_padctl *padctl = lane->pad->padctl; | 1465 | struct tegra_xusb_padctl *padctl; |
| 1466 | |||
| 1467 | if (!phy) | ||
| 1468 | return; | ||
| 1469 | |||
| 1470 | lane = phy_get_drvdata(phy); | ||
| 1471 | padctl = lane->pad->padctl; | ||
| 1466 | 1472 | ||
| 1467 | if (padctl->soc->ops->utmi_pad_power_on) | 1473 | if (padctl->soc->ops->utmi_pad_power_on) |
| 1468 | padctl->soc->ops->utmi_pad_power_on(phy); | 1474 | padctl->soc->ops->utmi_pad_power_on(phy); |
| @@ -1471,8 +1477,14 @@ EXPORT_SYMBOL_GPL(tegra_phy_xusb_utmi_pad_power_on); · 2 unmodified lines | |||
| 1471 | 1477 | ||
| 1472 | void tegra_phy_xusb_utmi_pad_power_down(struct phy *phy) | 1478 | void tegra_phy_xusb_utmi_pad_power_down(struct phy *phy) |
| 1473 | { | 1479 | { |
| 1474 | struct tegra_xusb_lane *lane = phy_get_drvdata(phy); | 1480 | struct tegra_xusb_lane *lane; |
| 1475 | struct tegra_xusb_padctl *padctl = lane->pad->padctl; | 1481 | struct tegra_xusb_padctl *padctl; |
| 1482 | |||
| 1483 | if (!phy) | ||
| 1484 | return; | ||
| 1485 | |||
| 1486 | lane = phy_get_drvdata(phy); | ||
| 1487 | padctl = lane->pad->padctl; | ||
| 1476 | 1488 | ||
| 1477 | if (padctl->soc->ops->utmi_pad_power_down) | 1489 | if (padctl->soc->ops->utmi_pad_power_down) |
| 1478 | padctl->soc->ops->utmi_pad_power_down(phy); | 1490 | padctl->soc->ops->utmi_pad_power_down(phy); |
| @@ -1300,8 +1300,16 @@ static int __init hp_wmi_bios_setup(struct platform_device *device) · 1299 unmodified lines | |||
| 1300 | wwan_rfkill = NULL; | 1300 | wwan_rfkill = NULL; |
| 1301 | rfkill2_count = 0; | 1301 | rfkill2_count = 0; |
| 1302 | 1302 | ||
| 1303 | if (hp_wmi_rfkill_setup(device)) | 1303 | /* |
| 1304 | hp_wmi_rfkill2_setup(device); | 1304 | * In pre-2009 BIOS, command 1Bh return 0x4 to indicate that |
| 1305 | * BIOS no longer controls the power for the wireless | ||
| 1306 | * devices. All features supported by this command will no | ||
| 1307 | * longer be supported. | ||
| 1308 | */ | ||
| 1309 | if (!hp_wmi_bios_2009_later()) { | ||
| 1310 | if (hp_wmi_rfkill_setup(device)) | ||
| 1311 | hp_wmi_rfkill2_setup(device); | ||
| 1312 | } | ||
| 1305 | 1313 | ||
| 1306 | err = hp_wmi_hwmon_init(); | 1314 | err = hp_wmi_hwmon_init(); |
| 1307 | 1315 | ||
| @@ -1533,6 +1533,24 @@ static const struct dmi_system_id hw_rfkill_list[] = { · 1532 unmodified lines | |||
| 1533 | {} | 1533 | {} |
| 1534 | }; | 1534 | }; |
| 1535 | 1535 | ||
| 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 | |||
| 1536 | static void ideapad_check_features(struct ideapad_private *priv) | 1554 | static void ideapad_check_features(struct ideapad_private *priv) |
| 1537 | { | 1555 | { |
| 1538 | acpi_handle handle = priv->adev->handle; | 1556 | acpi_handle handle = priv->adev->handle; |
| @@ -1541,7 +1559,12 @@ static void ideapad_check_features(struct ideapad_private *priv) · 2 unmodified lines | |||
| 1541 | priv->features.hw_rfkill_switch = dmi_check_system(hw_rfkill_list); | 1559 | priv->features.hw_rfkill_switch = dmi_check_system(hw_rfkill_list); |
| 1542 | 1560 | ||
| 1543 | /* Most ideapads with ELAN0634 touchpad don't use EC touchpad switch */ | 1561 | /* Most ideapads with ELAN0634 touchpad don't use EC touchpad switch */ |
| 1544 | priv->features.touchpad_ctrl_via_ec = !acpi_dev_present("ELAN0634", NULL, -1); | 1562 | if (acpi_dev_present("ELAN0634", NULL, -1)) |
| 1563 | priv->features.touchpad_ctrl_via_ec = 0; | ||
| 1564 | else if (dmi_check_system(no_touchpad_switch_list)) | ||
| 1565 | priv->features.touchpad_ctrl_via_ec = 0; | ||
| 1566 | else | ||
| 1567 | priv->features.touchpad_ctrl_via_ec = 1; | ||
| 1545 | 1568 | ||
| 1546 | if (!read_ec_data(handle, VPCCMD_R_FAN, &val)) | 1569 | if (!read_ec_data(handle, VPCCMD_R_FAN, &val)) |
| 1547 | priv->features.fan_mode = true; | 1570 | priv->features.fan_mode = true; |
| @@ -27,6 +27,9 @@ static const struct acpi_device_id intel_hid_ids[] = { · 26 unmodified lines | |||
| 27 | {"INTC1051", 0}, | 27 | {"INTC1051", 0}, |
| 28 | {"INTC1054", 0}, | 28 | {"INTC1054", 0}, |
| 29 | {"INTC1070", 0}, | 29 | {"INTC1070", 0}, |
| 30 | {"INTC1076", 0}, | ||
| 31 | {"INTC1077", 0}, | ||
| 32 | {"INTC1078", 0}, | ||
| 30 | {"", 0}, | 33 | {"", 0}, |
| 31 | }; | 34 | }; |
| 32 | MODULE_DEVICE_TABLE(acpi, intel_hid_ids); | 35 | MODULE_DEVICE_TABLE(acpi, intel_hid_ids); |
| @@ -9,6 +9,7 @@ · 8 unmodified lines | |||
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
| 12 | #include <linux/io-64-nonatomic-lo-hi.h> | ||
| 12 | #include <linux/module.h> | 13 | #include <linux/module.h> |
| 13 | #include <linux/mm.h> | 14 | #include <linux/mm.h> |
| 14 | #include <linux/pci.h> | 15 | #include <linux/pci.h> |
| @@ -19,6 +20,7 @@ · 4 unmodified lines | |||
| 19 | #define PMT_XA_START 0 | 20 | #define PMT_XA_START 0 |
| 20 | #define PMT_XA_MAX INT_MAX | 21 | #define PMT_XA_MAX INT_MAX |
| 21 | #define PMT_XA_LIMIT XA_LIMIT(PMT_XA_START, PMT_XA_MAX) | 22 | #define PMT_XA_LIMIT XA_LIMIT(PMT_XA_START, PMT_XA_MAX) |
| 23 | #define GUID_SPR_PUNIT 0x9956f43f | ||
| 22 | 24 | ||
| 23 | bool intel_pmt_is_early_client_hw(struct device *dev) | 25 | bool intel_pmt_is_early_client_hw(struct device *dev) |
| 24 | { | 26 | { |
| @@ -33,6 +35,29 @@ bool intel_pmt_is_early_client_hw(struct device *dev) · 8 unmodified lines | |||
| 33 | } | 35 | } |
| 34 | EXPORT_SYMBOL_GPL(intel_pmt_is_early_client_hw); | 36 | EXPORT_SYMBOL_GPL(intel_pmt_is_early_client_hw); |
| 35 | 37 | ||
| 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 | |||
| 36 | /* | 61 | /* |
| 37 | * sysfs | 62 | * sysfs |
| 38 | */ | 63 | */ |
| @@ -54,7 +79,11 @@ intel_pmt_read(struct file *filp, struct kobject *kobj, · 15 unmodified lines | |||
| 54 | if (count > entry->size - off) | 79 | if (count > entry->size - off) |
| 55 | count = entry->size - off; | 80 | count = entry->size - off; |
| 56 | 81 | ||
| 57 | memcpy_fromio(buf, entry->base + off, count); | 82 | if (entry->guid == GUID_SPR_PUNIT) |
| 83 | /* PUNIT on SPR only supports aligned 64-bit read */ | ||
| 84 | count = pmt_memcpy64_fromio(buf, entry->base + off, count); | ||
| 85 | else | ||
| 86 | memcpy_fromio(buf, entry->base + off, count); | ||
| 58 | 87 | ||
| 59 | return count; | 88 | return count; |
| 60 | } | 89 | } |
| @@ -19,26 +19,23 @@ · 18 unmodified lines | |||
| 19 | #define P2SBC 0xe0 | 19 | #define P2SBC 0xe0 |
| 20 | #define P2SBC_HIDE BIT(8) | 20 | #define P2SBC_HIDE BIT(8) |
| 21 | 21 | ||
| 22 | #define P2SB_DEVFN_DEFAULT PCI_DEVFN(31, 1) | ||
| 23 | |||
| 22 | static const struct x86_cpu_id p2sb_cpu_ids[] = { | 24 | static const struct x86_cpu_id p2sb_cpu_ids[] = { |
| 23 | X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, PCI_DEVFN(13, 0)), | 25 | X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, PCI_DEVFN(13, 0)), |
| 24 | X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_D, PCI_DEVFN(31, 1)), | ||
| 25 | X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT_D, PCI_DEVFN(31, 1)), | ||
| 26 | X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE, PCI_DEVFN(31, 1)), | ||
| 27 | X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE_L, PCI_DEVFN(31, 1)), | ||
| 28 | X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE, PCI_DEVFN(31, 1)), | ||
| 29 | X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_L, PCI_DEVFN(31, 1)), | ||
| 30 | {} | 26 | {} |
| 31 | }; | 27 | }; |
| 32 | 28 | ||
| 33 | static int p2sb_get_devfn(unsigned int *devfn) | 29 | static int p2sb_get_devfn(unsigned int *devfn) |
| 34 | { | 30 | { |
| 31 | unsigned int fn = P2SB_DEVFN_DEFAULT; | ||
| 35 | const struct x86_cpu_id *id; | 32 | const struct x86_cpu_id *id; |
| 36 | 33 | ||
| 37 | id = x86_match_cpu(p2sb_cpu_ids); | 34 | id = x86_match_cpu(p2sb_cpu_ids); |
| 38 | if (!id) | 35 | if (id) |
| 39 | return -ENODEV; | 36 | fn = (unsigned int)id->driver_data; |
| 40 | 37 | ||
| 41 | *devfn = (unsigned int)id->driver_data; | 38 | *devfn = fn; |
| 42 | return 0; | 39 | return 0; |
| 43 | } | 40 | } |
| 44 | 41 | ||
| @@ -770,6 +770,22 @@ static const struct ts_dmi_data predia_basic_data = { · 769 unmodified lines | |||
| 770 | .properties = predia_basic_props, | 770 | .properties = predia_basic_props, |
| 771 | }; | 771 | }; |
| 772 | 772 | ||
| 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 | |||
| 773 | static const struct property_entry rwc_nanote_p8_props[] = { | 789 | static const struct property_entry rwc_nanote_p8_props[] = { |
| 774 | PROPERTY_ENTRY_U32("touchscreen-min-y", 46), | 790 | PROPERTY_ENTRY_U32("touchscreen-min-y", 46), |
| 775 | PROPERTY_ENTRY_U32("touchscreen-size-x", 1728), | 791 | PROPERTY_ENTRY_U32("touchscreen-size-x", 1728), |
| @@ -1409,6 +1425,15 @@ const struct dmi_system_id touchscreen_dmi_table[] = { · 633 unmodified lines | |||
| 1409 | DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"), | 1425 | DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"), |
| 1410 | }, | 1426 | }, |
| 1411 | }, | 1427 | }, |
| 1428 | { | ||
| 1429 | /* RCA Cambio W101 v2 */ | ||
| 1430 | /* https://github.com/onitake/gsl-firmware/discussions/193 */ | ||
| 1431 | .driver_data = (void *)&rca_cambio_w101_v2_data, | ||
| 1432 | .matches = { | ||
| 1433 | DMI_MATCH(DMI_SYS_VENDOR, "RCA"), | ||
| 1434 | DMI_MATCH(DMI_PRODUCT_NAME, "W101SA23T1"), | ||
| 1435 | }, | ||
| 1436 | }, | ||
| 1412 | { | 1437 | { |
| 1413 | /* RWC NANOTE P8 */ | 1438 | /* RWC NANOTE P8 */ |
| 1414 | .driver_data = (void *)&rwc_nanote_p8_data, | 1439 | .driver_data = (void *)&rwc_nanote_p8_data, |
| @@ -342,7 +342,10 @@ static int xcrb_msg_to_type6cprb_msgx(bool userspace, struct ap_message *ap_msg, · 341 unmodified lines | |||
| 342 | }; | 342 | }; |
| 343 | struct { | 343 | struct { |
| 344 | struct type6_hdr hdr; | 344 | struct type6_hdr hdr; |
| 345 | struct CPRBX cprbx; | 345 | union { |
| 346 | struct CPRBX cprbx; | ||
| 347 | DECLARE_FLEX_ARRAY(u8, userdata); | ||
| 348 | }; | ||
| 346 | } __packed * msg = ap_msg->msg; | 349 | } __packed * msg = ap_msg->msg; |
| 347 | 350 | ||
| 348 | int rcblen = CEIL4(xcrb->request_control_blk_length); | 351 | int rcblen = CEIL4(xcrb->request_control_blk_length); |
| @@ -403,7 +406,8 @@ static int xcrb_msg_to_type6cprb_msgx(bool userspace, struct ap_message *ap_msg, · 54 unmodified lines | |||
| 403 | msg->hdr.fromcardlen2 = xcrb->reply_data_length; | 406 | msg->hdr.fromcardlen2 = xcrb->reply_data_length; |
| 404 | 407 | ||
| 405 | /* prepare CPRB */ | 408 | /* prepare CPRB */ |
| 406 | if (z_copy_from_user(userspace, &msg->cprbx, xcrb->request_control_blk_addr, | 409 | if (z_copy_from_user(userspace, msg->userdata, |
| 410 | xcrb->request_control_blk_addr, | ||
| 407 | xcrb->request_control_blk_length)) | 411 | xcrb->request_control_blk_length)) |
| 408 | return -EFAULT; | 412 | return -EFAULT; |
| 409 | if (msg->cprbx.cprb_len + sizeof(msg->hdr.function_code) > | 413 | if (msg->cprbx.cprb_len + sizeof(msg->hdr.function_code) > |
| @@ -469,9 +473,14 @@ static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap · 59 unmodified lines | |||
| 469 | 473 | ||
| 470 | struct { | 474 | struct { |
| 471 | struct type6_hdr hdr; | 475 | struct type6_hdr hdr; |
| 472 | struct ep11_cprb cprbx; | 476 | union { |
| 473 | unsigned char pld_tag; /* fixed value 0x30 */ | 477 | struct { |
| 474 | unsigned char pld_lenfmt; /* payload length format */ | 478 | struct ep11_cprb cprbx; |
| 479 | unsigned char pld_tag; /* fixed value 0x30 */ | ||
| 480 | unsigned char pld_lenfmt; /* length format */ | ||
| 481 | } __packed; | ||
| 482 | DECLARE_FLEX_ARRAY(u8, userdata); | ||
| 483 | }; | ||
| 475 | } __packed * msg = ap_msg->msg; | 484 | } __packed * msg = ap_msg->msg; |
| 476 | 485 | ||
| 477 | struct pld_hdr { | 486 | struct pld_hdr { |
| @@ -500,7 +509,7 @@ static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap · 22 unmodified lines | |||
| 500 | msg->hdr.fromcardlen1 = xcrb->resp_len; | 509 | msg->hdr.fromcardlen1 = xcrb->resp_len; |
| 501 | 510 | ||
| 502 | /* Import CPRB data from the ioctl input parameter */ | 511 | /* Import CPRB data from the ioctl input parameter */ |
| 503 | if (z_copy_from_user(userspace, &msg->cprbx.cprb_len, | 512 | if (z_copy_from_user(userspace, msg->userdata, |
| 504 | (char __force __user *)xcrb->req, xcrb->req_len)) { | 513 | (char __force __user *)xcrb->req, xcrb->req_len)) { |
| 505 | return -EFAULT; | 514 | return -EFAULT; |
| 506 | } | 515 | } |
| @@ -708,8 +708,13 @@ static void ibmvfc_init_host(struct ibmvfc_host *vhost) · 707 unmodified lines | |||
| 708 | memset(vhost->async_crq.msgs.async, 0, PAGE_SIZE); | 708 | memset(vhost->async_crq.msgs.async, 0, PAGE_SIZE); |
| 709 | vhost->async_crq.cur = 0; | 709 | vhost->async_crq.cur = 0; |
| 710 | 710 | ||
| 711 | list_for_each_entry(tgt, &vhost->targets, queue) | 711 | list_for_each_entry(tgt, &vhost->targets, queue) { |
| 712 | ibmvfc_del_tgt(tgt); | 712 | if (vhost->client_migrated) |
| 713 | tgt->need_login = 1; | ||
| 714 | else | ||
| 715 | ibmvfc_del_tgt(tgt); | ||
| 716 | } | ||
| 717 | |||
| 713 | scsi_block_requests(vhost->host); | 718 | scsi_block_requests(vhost->host); |
| 714 | ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_INIT); | 719 | ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_INIT); |
| 715 | vhost->job_step = ibmvfc_npiv_login; | 720 | vhost->job_step = ibmvfc_npiv_login; |
| @@ -3235,9 +3240,12 @@ static void ibmvfc_handle_crq(struct ibmvfc_crq *crq, struct ibmvfc_host *vhost, · 2519 unmodified lines | |||
| 3235 | /* We need to re-setup the interpartition connection */ | 3240 | /* We need to re-setup the interpartition connection */ |
| 3236 | dev_info(vhost->dev, "Partition migrated, Re-enabling adapter\n"); | 3241 | dev_info(vhost->dev, "Partition migrated, Re-enabling adapter\n"); |
| 3237 | vhost->client_migrated = 1; | 3242 | vhost->client_migrated = 1; |
| 3243 | |||
| 3244 | scsi_block_requests(vhost->host); | ||
| 3238 | ibmvfc_purge_requests(vhost, DID_REQUEUE); | 3245 | ibmvfc_purge_requests(vhost, DID_REQUEUE); |
| 3239 | ibmvfc_link_down(vhost, IBMVFC_LINK_DOWN); | 3246 | ibmvfc_set_host_state(vhost, IBMVFC_LINK_DOWN); |
| 3240 | ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_REENABLE); | 3247 | ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_REENABLE); |
| 3248 | wake_up(&vhost->work_wait_q); | ||
| 3241 | } else if (crq->format == IBMVFC_PARTNER_FAILED || crq->format == IBMVFC_PARTNER_DEREGISTER) { | 3249 | } else if (crq->format == IBMVFC_PARTNER_FAILED || crq->format == IBMVFC_PARTNER_DEREGISTER) { |
| 3242 | dev_err(vhost->dev, "Host partner adapter deregistered or failed (rc=%d)\n", crq->format); | 3250 | dev_err(vhost->dev, "Host partner adapter deregistered or failed (rc=%d)\n", crq->format); |
| 3243 | ibmvfc_purge_requests(vhost, DID_ERROR); | 3251 | ibmvfc_purge_requests(vhost, DID_ERROR); |
| @@ -1899,6 +1899,13 @@ static int resp_readcap16(struct scsi_cmnd *scp, · 1898 unmodified lines | |||
| 1899 | arr[14] |= 0x40; | 1899 | arr[14] |= 0x40; |
| 1900 | } | 1900 | } |
| 1901 | 1901 | ||
| 1902 | /* | ||
| 1903 | * Since the scsi_debug READ CAPACITY implementation always reports the | ||
| 1904 | * total disk capacity, set RC BASIS = 1 for host-managed ZBC devices. | ||
| 1905 | */ | ||
| 1906 | if (devip->zmodel == BLK_ZONED_HM) | ||
| 1907 | arr[12] |= 1 << 4; | ||
| 1908 | |||
| 1902 | arr[15] = sdebug_lowest_aligned & 0xff; | 1909 | arr[15] = sdebug_lowest_aligned & 0xff; |
| 1903 | 1910 | ||
| 1904 | if (have_dif_prot) { | 1911 | if (have_dif_prot) { |
| @@ -722,12 +722,17 @@ int sas_phy_add(struct sas_phy *phy) · 721 unmodified lines | |||
| 722 | int error; | 722 | int error; |
| 723 | 723 | ||
| 724 | error = device_add(&phy->dev); | 724 | error = device_add(&phy->dev); |
| 725 | if (!error) { | 725 | if (error) |
| 726 | transport_add_device(&phy->dev); | 726 | return error; |
| 727 | transport_configure_device(&phy->dev); | 727 | |
| 728 | error = transport_add_device(&phy->dev); | ||
| 729 | if (error) { | ||
| 730 | device_del(&phy->dev); | ||
| 731 | return error; | ||
| 728 | } | 732 | } |
| 733 | transport_configure_device(&phy->dev); | ||
| 729 | 734 | ||
| 730 | return error; | 735 | return 0; |
| 731 | } | 736 | } |
| 732 | EXPORT_SYMBOL(sas_phy_add); | 737 | EXPORT_SYMBOL(sas_phy_add); |
| 733 | 738 | ||
| @@ -1513,6 +1513,7 @@ static int intel_link_probe(struct auxiliary_device *auxdev, · 1512 unmodified lines | |||
| 1513 | 1513 | ||
| 1514 | bus->link_id = auxdev->id; | 1514 | bus->link_id = auxdev->id; |
| 1515 | bus->dev_num_ida_min = INTEL_DEV_NUM_IDA_MIN; | 1515 | bus->dev_num_ida_min = INTEL_DEV_NUM_IDA_MIN; |
| 1516 | bus->clk_stop_timeout = 1; | ||
| 1516 | 1517 | ||
| 1517 | sdw_cdns_probe(cdns); | 1518 | sdw_cdns_probe(cdns); |
| 1518 | 1519 | ||
| @@ -344,6 +344,9 @@ static int qcom_swrm_cmd_fifo_wr_cmd(struct qcom_swrm_ctrl *swrm, u8 cmd_data, · 343 unmodified lines | |||
| 344 | if (swrm_wait_for_wr_fifo_avail(swrm)) | 344 | if (swrm_wait_for_wr_fifo_avail(swrm)) |
| 345 | return SDW_CMD_FAIL_OTHER; | 345 | return SDW_CMD_FAIL_OTHER; |
| 346 | 346 | ||
| 347 | if (cmd_id == SWR_BROADCAST_CMD_ID) | ||
| 348 | reinit_completion(&swrm->broadcast); | ||
| 349 | |||
| 347 | /* Its assumed that write is okay as we do not get any status back */ | 350 | /* Its assumed that write is okay as we do not get any status back */ |
| 348 | swrm->reg_write(swrm, SWRM_CMD_FIFO_WR_CMD, val); | 351 | swrm->reg_write(swrm, SWRM_CMD_FIFO_WR_CMD, val); |
| 349 | 352 | ||
| @@ -377,6 +380,12 @@ static int qcom_swrm_cmd_fifo_rd_cmd(struct qcom_swrm_ctrl *swrm, · 27 unmodified lines | |||
| 377 | 380 | ||
| 378 | val = swrm_get_packed_reg_val(&swrm->rcmd_id, len, dev_addr, reg_addr); | 381 | val = swrm_get_packed_reg_val(&swrm->rcmd_id, len, dev_addr, reg_addr); |
| 379 | 382 | ||
| 383 | /* | ||
| 384 | * Check for outstanding cmd wrt. write fifo depth to avoid | ||
| 385 | * overflow as read will also increase write fifo cnt. | ||
| 386 | */ | ||
| 387 | swrm_wait_for_wr_fifo_avail(swrm); | ||
| 388 | |||
| 380 | /* wait for FIFO RD to complete to avoid overflow */ | 389 | /* wait for FIFO RD to complete to avoid overflow */ |
| 381 | usleep_range(100, 105); | 390 | usleep_range(100, 105); |
| 382 | swrm->reg_write(swrm, SWRM_CMD_FIFO_RD_CMD, val); | 391 | swrm->reg_write(swrm, SWRM_CMD_FIFO_RD_CMD, val); |
| @@ -65,7 +65,7 @@ enum amd_spi_speed { · 64 unmodified lines | |||
| 65 | F_16_66MHz, | 65 | F_16_66MHz, |
| 66 | F_100MHz, | 66 | F_100MHz, |
| 67 | F_800KHz, | 67 | F_800KHz, |
| 68 | SPI_SPD7, | 68 | SPI_SPD7 = 0x7, |
| 69 | F_50MHz = 0x4, | 69 | F_50MHz = 0x4, |
| 70 | F_4MHz = 0x32, | 70 | F_4MHz = 0x32, |
| 71 | F_3_17MHz = 0x3F | 71 | F_3_17MHz = 0x3F |
| @@ -52,17 +52,17 @@ · 51 unmodified lines | |||
| 52 | #define FRACC 0x50 | 52 | #define FRACC 0x50 |
| 53 | 53 | ||
| 54 | #define FREG(n) (0x54 + ((n) * 4)) | 54 | #define FREG(n) (0x54 + ((n) * 4)) |
| 55 | #define FREG_BASE_MASK 0x3fff | 55 | #define FREG_BASE_MASK GENMASK(14, 0) |
| 56 | #define FREG_LIMIT_SHIFT 16 | 56 | #define FREG_LIMIT_SHIFT 16 |
| 57 | #define FREG_LIMIT_MASK (0x03fff << FREG_LIMIT_SHIFT) | 57 | #define FREG_LIMIT_MASK GENMASK(30, 16) |
| 58 | 58 | ||
| 59 | /* Offset is from @ispi->pregs */ | 59 | /* Offset is from @ispi->pregs */ |
| 60 | #define PR(n) ((n) * 4) | 60 | #define PR(n) ((n) * 4) |
| 61 | #define PR_WPE BIT(31) | 61 | #define PR_WPE BIT(31) |
| 62 | #define PR_LIMIT_SHIFT 16 | 62 | #define PR_LIMIT_SHIFT 16 |
| 63 | #define PR_LIMIT_MASK (0x3fff << PR_LIMIT_SHIFT) | 63 | #define PR_LIMIT_MASK GENMASK(30, 16) |
| 64 | #define PR_RPE BIT(15) | 64 | #define PR_RPE BIT(15) |
| 65 | #define PR_BASE_MASK 0x3fff | 65 | #define PR_BASE_MASK GENMASK(14, 0) |
| 66 | 66 | ||
| 67 | /* Offsets are from @ispi->sregs */ | 67 | /* Offsets are from @ispi->sregs */ |
| 68 | #define SSFSTS_CTL 0x00 | 68 | #define SSFSTS_CTL 0x00 |
| @@ -160,6 +160,7 @@ struct meson_spicc_device { · 159 unmodified lines | |||
| 160 | struct clk *clk; | 160 | struct clk *clk; |
| 161 | struct spi_message *message; | 161 | struct spi_message *message; |
| 162 | struct spi_transfer *xfer; | 162 | struct spi_transfer *xfer; |
| 163 | struct completion done; | ||
| 163 | const struct meson_spicc_data *data; | 164 | const struct meson_spicc_data *data; |
| 164 | u8 *tx_buf; | 165 | u8 *tx_buf; |
| 165 | u8 *rx_buf; | 166 | u8 *rx_buf; |
| @@ -282,7 +283,7 @@ static irqreturn_t meson_spicc_irq(int irq, void *data) · 116 unmodified lines | |||
| 282 | /* Disable all IRQs */ | 283 | /* Disable all IRQs */ |
| 283 | writel(0, spicc->base + SPICC_INTREG); | 284 | writel(0, spicc->base + SPICC_INTREG); |
| 284 | 285 | ||
| 285 | spi_finalize_current_transfer(spicc->master); | 286 | complete(&spicc->done); |
| 286 | 287 | ||
| 287 | return IRQ_HANDLED; | 288 | return IRQ_HANDLED; |
| 288 | } | 289 | } |
| @@ -386,6 +387,7 @@ static int meson_spicc_transfer_one(struct spi_master *master, · 97 unmodified lines | |||
| 386 | struct spi_transfer *xfer) | 387 | struct spi_transfer *xfer) |
| 387 | { | 388 | { |
| 388 | struct meson_spicc_device *spicc = spi_master_get_devdata(master); | 389 | struct meson_spicc_device *spicc = spi_master_get_devdata(master); |
| 390 | uint64_t timeout; | ||
| 389 | 391 | ||
| 390 | /* Store current transfer */ | 392 | /* Store current transfer */ |
| 391 | spicc->xfer = xfer; | 393 | spicc->xfer = xfer; |
| @@ -410,13 +412,29 @@ static int meson_spicc_transfer_one(struct spi_master *master, · 18 unmodified lines | |||
| 410 | /* Setup burst */ | 412 | /* Setup burst */ |
| 411 | meson_spicc_setup_burst(spicc); | 413 | meson_spicc_setup_burst(spicc); |
| 412 | 414 | ||
| 415 | /* Setup wait for completion */ | ||
| 416 | reinit_completion(&spicc->done); | ||
| 417 | |||
| 418 | /* For each byte we wait for 8 cycles of the SPI clock */ | ||
| 419 | timeout = 8LL * MSEC_PER_SEC * xfer->len; | ||
| 420 | do_div(timeout, xfer->speed_hz); | ||
| 421 | |||
| 422 | /* Add 10us delay between each fifo bursts */ | ||
| 423 | timeout += ((xfer->len >> 4) * 10) / MSEC_PER_SEC; | ||
| 424 | |||
| 425 | /* Increase it twice and add 200 ms tolerance */ | ||
| 426 | timeout += timeout + 200; | ||
| 427 | |||
| 413 | /* Start burst */ | 428 | /* Start burst */ |
| 414 | writel_bits_relaxed(SPICC_XCH, SPICC_XCH, spicc->base + SPICC_CONREG); | 429 | writel_bits_relaxed(SPICC_XCH, SPICC_XCH, spicc->base + SPICC_CONREG); |
| 415 | 430 | ||
| 416 | /* Enable interrupts */ | 431 | /* Enable interrupts */ |
| 417 | writel_relaxed(SPICC_TC_EN, spicc->base + SPICC_INTREG); | 432 | writel_relaxed(SPICC_TC_EN, spicc->base + SPICC_INTREG); |
| 418 | 433 | ||
| 419 | return 1; | 434 | if (!wait_for_completion_timeout(&spicc->done, msecs_to_jiffies(timeout))) |
| 435 | return -ETIMEDOUT; | ||
| 436 | |||
| 437 | return 0; | ||
| 420 | } | 438 | } |
| 421 | 439 | ||
| 422 | static int meson_spicc_prepare_message(struct spi_master *master, | 440 | 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 | |||
| 743 | spicc->pdev = pdev; | 761 | spicc->pdev = pdev; |
| 744 | platform_set_drvdata(pdev, spicc); | 762 | platform_set_drvdata(pdev, spicc); |
| 745 | 763 | ||
| 764 | init_completion(&spicc->done); | ||
| 765 | |||
| 746 | spicc->base = devm_platform_ioremap_resource(pdev, 0); | 766 | spicc->base = devm_platform_ioremap_resource(pdev, 0); |
| 747 | if (IS_ERR(spicc->base)) { | 767 | if (IS_ERR(spicc->base)) { |
| 748 | dev_err(&pdev->dev, "io resource mapping failed\n"); | 768 | dev_err(&pdev->dev, "io resource mapping failed\n"); |
| @@ -551,14 +551,17 @@ static void mtk_spi_enable_transfer(struct spi_master *master) · 550 unmodified lines | |||
| 551 | writel(cmd, mdata->base + SPI_CMD_REG); | 551 | writel(cmd, mdata->base + SPI_CMD_REG); |
| 552 | } | 552 | } |
| 553 | 553 | ||
| 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) |
| 555 | { | 555 | { |
| 556 | u32 mult_delta; | 556 | u32 mult_delta = 0; |
| 557 | 557 | ||
| 558 | if (xfer_len > MTK_SPI_PACKET_SIZE) | 558 | if (mdata->dev_comp->ipm_design) { |
| 559 | mult_delta = xfer_len % MTK_SPI_PACKET_SIZE; | 559 | if (xfer_len > MTK_SPI_IPM_PACKET_SIZE) |
| 560 | else | 560 | mult_delta = xfer_len % MTK_SPI_IPM_PACKET_SIZE; |
| 561 | mult_delta = 0; | 561 | } else { |
| 562 | if (xfer_len > MTK_SPI_PACKET_SIZE) | ||
| 563 | mult_delta = xfer_len % MTK_SPI_PACKET_SIZE; | ||
| 564 | } | ||
| 562 | 565 | ||
| 563 | return mult_delta; | 566 | return mult_delta; |
| 564 | } | 567 | } |
| @@ -570,22 +573,22 @@ static void mtk_spi_update_mdata_len(struct spi_master *master) · 5 unmodified lines | |||
| 570 | 573 | ||
| 571 | if (mdata->tx_sgl_len && mdata->rx_sgl_len) { | 574 | if (mdata->tx_sgl_len && mdata->rx_sgl_len) { |
| 572 | if (mdata->tx_sgl_len > mdata->rx_sgl_len) { | 575 | if (mdata->tx_sgl_len > mdata->rx_sgl_len) { |
| 573 | mult_delta = mtk_spi_get_mult_delta(mdata->rx_sgl_len); | 576 | mult_delta = mtk_spi_get_mult_delta(mdata, mdata->rx_sgl_len); |
| 574 | mdata->xfer_len = mdata->rx_sgl_len - mult_delta; | 577 | mdata->xfer_len = mdata->rx_sgl_len - mult_delta; |
| 575 | mdata->rx_sgl_len = mult_delta; | 578 | mdata->rx_sgl_len = mult_delta; |
| 576 | mdata->tx_sgl_len -= mdata->xfer_len; | 579 | mdata->tx_sgl_len -= mdata->xfer_len; |
| 577 | } else { | 580 | } else { |
| 578 | mult_delta = mtk_spi_get_mult_delta(mdata->tx_sgl_len); | 581 | mult_delta = mtk_spi_get_mult_delta(mdata, mdata->tx_sgl_len); |
| 579 | mdata->xfer_len = mdata->tx_sgl_len - mult_delta; | 582 | mdata->xfer_len = mdata->tx_sgl_len - mult_delta; |
| 580 | mdata->tx_sgl_len = mult_delta; | 583 | mdata->tx_sgl_len = mult_delta; |
| 581 | mdata->rx_sgl_len -= mdata->xfer_len; | 584 | mdata->rx_sgl_len -= mdata->xfer_len; |
| 582 | } | 585 | } |
| 583 | } else if (mdata->tx_sgl_len) { | 586 | } else if (mdata->tx_sgl_len) { |
| 584 | mult_delta = mtk_spi_get_mult_delta(mdata->tx_sgl_len); | 587 | mult_delta = mtk_spi_get_mult_delta(mdata, mdata->tx_sgl_len); |
| 585 | mdata->xfer_len = mdata->tx_sgl_len - mult_delta; | 588 | mdata->xfer_len = mdata->tx_sgl_len - mult_delta; |
| 586 | mdata->tx_sgl_len = mult_delta; | 589 | mdata->tx_sgl_len = mult_delta; |
| 587 | } else if (mdata->rx_sgl_len) { | 590 | } else if (mdata->rx_sgl_len) { |
| 588 | mult_delta = mtk_spi_get_mult_delta(mdata->rx_sgl_len); | 591 | mult_delta = mtk_spi_get_mult_delta(mdata, mdata->rx_sgl_len); |
| 589 | mdata->xfer_len = mdata->rx_sgl_len - mult_delta; | 592 | mdata->xfer_len = mdata->rx_sgl_len - mult_delta; |
| 590 | mdata->rx_sgl_len = mult_delta; | 593 | mdata->rx_sgl_len = mult_delta; |
| 591 | } | 594 | } |
| @@ -434,7 +434,7 @@ static int stm32_spi_prepare_mbr(struct stm32_spi *spi, u32 speed_hz, · 433 unmodified lines | |||
| 434 | u32 div, mbrdiv; | 434 | u32 div, mbrdiv; |
| 435 | 435 | ||
| 436 | /* Ensure spi->clk_rate is even */ | 436 | /* Ensure spi->clk_rate is even */ |
| 437 | div = DIV_ROUND_UP(spi->clk_rate & ~0x1, speed_hz); | 437 | div = DIV_ROUND_CLOSEST(spi->clk_rate & ~0x1, speed_hz); |
| 438 | 438 | ||
| 439 | /* | 439 | /* |
| 440 | * SPI framework set xfer->speed_hz to master->max_speed_hz if | 440 | * SPI framework set xfer->speed_hz to master->max_speed_hz if |
| @@ -886,6 +886,7 @@ static irqreturn_t stm32h7_spi_irq_thread(int irq, void *dev_id) · 445 unmodified lines | |||
| 886 | static DEFINE_RATELIMIT_STATE(rs, | 886 | static DEFINE_RATELIMIT_STATE(rs, |
| 887 | DEFAULT_RATELIMIT_INTERVAL * 10, | 887 | DEFAULT_RATELIMIT_INTERVAL * 10, |
| 888 | 1); | 888 | 1); |
| 889 | ratelimit_set_flags(&rs, RATELIMIT_MSG_ON_RELEASE); | ||
| 889 | if (__ratelimit(&rs)) | 890 | if (__ratelimit(&rs)) |
| 890 | dev_dbg_ratelimited(spi->dev, "Communication suspended\n"); | 891 | dev_dbg_ratelimited(spi->dev, "Communication suspended\n"); |
| 891 | if (!spi->cur_usedma && (spi->rx_buf && (spi->rx_len > 0))) | 892 | if (!spi->cur_usedma && (spi->rx_buf && (spi->rx_len > 0))) |
| @@ -720,6 +720,9 @@ static int tegra_qspi_start_cpu_based_transfer(struct tegra_qspi *qspi, struct s · 719 unmodified lines | |||
| 720 | 720 | ||
| 721 | static void tegra_qspi_deinit_dma(struct tegra_qspi *tqspi) | 721 | static void tegra_qspi_deinit_dma(struct tegra_qspi *tqspi) |
| 722 | { | 722 | { |
| 723 | if (!tqspi->soc_data->has_dma) | ||
| 724 | return; | ||
| 725 | |||
| 723 | if (tqspi->tx_dma_buf) { | 726 | if (tqspi->tx_dma_buf) { |
| 724 | dma_free_coherent(tqspi->dev, tqspi->dma_buf_size, | 727 | dma_free_coherent(tqspi->dev, tqspi->dma_buf_size, |
| 725 | tqspi->tx_dma_buf, tqspi->tx_dma_phys); | 728 | tqspi->tx_dma_buf, tqspi->tx_dma_phys); |
| @@ -750,6 +753,9 @@ static int tegra_qspi_init_dma(struct tegra_qspi *tqspi) · 24 unmodified lines | |||
| 750 | u32 *dma_buf; | 753 | u32 *dma_buf; |
| 751 | int err; | 754 | int err; |
| 752 | 755 | ||
| 756 | if (!tqspi->soc_data->has_dma) | ||
| 757 | return 0; | ||
| 758 | |||
| 753 | dma_chan = dma_request_chan(tqspi->dev, "rx"); | 759 | dma_chan = dma_request_chan(tqspi->dev, "rx"); |
| 754 | if (IS_ERR(dma_chan)) { | 760 | if (IS_ERR(dma_chan)) { |
| 755 | err = PTR_ERR(dma_chan); | 761 | err = PTR_ERR(dma_chan); |
| @@ -512,7 +512,7 @@ static u64 bio_end_offset(struct bio *bio) · 511 unmodified lines | |||
| 512 | static noinline int add_ra_bio_pages(struct inode *inode, | 512 | static noinline int add_ra_bio_pages(struct inode *inode, |
| 513 | u64 compressed_end, | 513 | u64 compressed_end, |
| 514 | struct compressed_bio *cb, | 514 | struct compressed_bio *cb, |
| 515 | unsigned long *pflags) | 515 | int *memstall, unsigned long *pflags) |
| 516 | { | 516 | { |
| 517 | struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); | 517 | struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); |
| 518 | unsigned long end_index; | 518 | unsigned long end_index; |
| @@ -581,8 +581,10 @@ static noinline int add_ra_bio_pages(struct inode *inode, · 62 unmodified lines | |||
| 581 | continue; | 581 | continue; |
| 582 | } | 582 | } |
| 583 | 583 | ||
| 584 | if (PageWorkingset(page)) | 584 | if (!*memstall && PageWorkingset(page)) { |
| 585 | psi_memstall_enter(pflags); | 585 | psi_memstall_enter(pflags); |
| 586 | *memstall = 1; | ||
| 587 | } | ||
| 586 | 588 | ||
| 587 | ret = set_page_extent_mapped(page); | 589 | ret = set_page_extent_mapped(page); |
| 588 | if (ret < 0) { | 590 | if (ret < 0) { |
| @@ -670,8 +672,8 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 81 unmodified lines | |||
| 670 | u64 em_len; | 672 | u64 em_len; |
| 671 | u64 em_start; | 673 | u64 em_start; |
| 672 | struct extent_map *em; | 674 | struct extent_map *em; |
| 673 | /* Initialize to 1 to make skip psi_memstall_leave unless needed */ | 675 | unsigned long pflags; |
| 674 | unsigned long pflags = 1; | 676 | int memstall = 0; |
| 675 | blk_status_t ret; | 677 | blk_status_t ret; |
| 676 | int ret2; | 678 | int ret2; |
| 677 | int i; | 679 | int i; |
| @@ -727,7 +729,7 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 49 unmodified lines | |||
| 727 | goto fail; | 729 | goto fail; |
| 728 | } | 730 | } |
| 729 | 731 | ||
| 730 | add_ra_bio_pages(inode, em_start + em_len, cb, &pflags); | 732 | add_ra_bio_pages(inode, em_start + em_len, cb, &memstall, &pflags); |
| 731 | 733 | ||
| 732 | /* include any pages we added in add_ra-bio_pages */ | 734 | /* include any pages we added in add_ra-bio_pages */ |
| 733 | cb->len = bio->bi_iter.bi_size; | 735 | cb->len = bio->bi_iter.bi_size; |
| @@ -807,7 +809,7 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 73 unmodified lines | |||
| 807 | } | 809 | } |
| 808 | } | 810 | } |
| 809 | 811 | ||
| 810 | if (!pflags) | 812 | if (memstall) |
| 811 | psi_memstall_leave(&pflags); | 813 | psi_memstall_leave(&pflags); |
| 812 | 814 | ||
| 813 | if (refcount_dec_and_test(&cb->pending_ios)) | 815 | if (refcount_dec_and_test(&cb->pending_ios)) |
| @@ -113,6 +113,22 @@ noinline void btrfs_release_path(struct btrfs_path *p) · 112 unmodified lines | |||
| 113 | } | 113 | } |
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | /* | ||
| 117 | * We want the transaction abort to print stack trace only for errors where the | ||
| 118 | * cause could be a bug, eg. due to ENOSPC, and not for common errors that are | ||
| 119 | * caused by external factors. | ||
| 120 | */ | ||
| 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 | |||
| 116 | /* | 132 | /* |
| 117 | * safely gets a reference on the root node of a tree. A lock | 133 | * safely gets a reference on the root node of a tree. A lock |
| 118 | * is not taken, so a concurrent writer may put a different node | 134 | * is not taken, so a concurrent writer may put a different node |
| @@ -3796,9 +3796,11 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, · 3795 unmodified lines | |||
| 3796 | const char *function, | 3796 | const char *function, |
| 3797 | unsigned int line, int errno, bool first_hit); | 3797 | unsigned int line, int errno, bool first_hit); |
| 3798 | 3798 | ||
| 3799 | bool __cold abort_should_print_stack(int errno); | ||
| 3800 | |||
| 3799 | /* | 3801 | /* |
| 3800 | * Call btrfs_abort_transaction as early as possible when an error condition is | 3802 | * Call btrfs_abort_transaction as early as possible when an error condition is |
| 3801 | * detected, that way the exact line number is reported. | 3803 | * detected, that way the exact stack trace is reported for some errors. |
| 3802 | */ | 3804 | */ |
| 3803 | #define btrfs_abort_transaction(trans, errno) \ | 3805 | #define btrfs_abort_transaction(trans, errno) \ |
| 3804 | do { \ | 3806 | do { \ |
| @@ -3807,10 +3809,11 @@ do { \ · 2 unmodified lines | |||
| 3807 | if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED, \ | 3809 | if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED, \ |
| 3808 | &((trans)->fs_info->fs_state))) { \ | 3810 | &((trans)->fs_info->fs_state))) { \ |
| 3809 | first = true; \ | 3811 | first = true; \ |
| 3810 | if ((errno) != -EIO && (errno) != -EROFS) { \ | 3812 | if (WARN(abort_should_print_stack(errno), \ |
| 3811 | WARN(1, KERN_DEBUG \ | 3813 | KERN_DEBUG \ |
| 3812 | "BTRFS: Transaction aborted (error %d)\n", \ | 3814 | "BTRFS: Transaction aborted (error %d)\n", \ |
| 3813 | (errno)); \ | 3815 | (errno))) { \ |
| 3816 | /* Stack trace printed. */ \ | ||
| 3814 | } else { \ | 3817 | } else { \ |
| 3815 | btrfs_debug((trans)->fs_info, \ | 3818 | btrfs_debug((trans)->fs_info, \ |
| 3816 | "Transaction aborted (error %d)", \ | 3819 | "Transaction aborted (error %d)", \ |
| @@ -2551,7 +2551,9 @@ static int btrfs_read_roots(struct btrfs_fs_info *fs_info) · 2550 unmodified lines | |||
| 2551 | fs_info->dev_root = root; | 2551 | fs_info->dev_root = root; |
| 2552 | } | 2552 | } |
| 2553 | /* Initialize fs_info for all devices in any case */ | 2553 | /* Initialize fs_info for all devices in any case */ |
| 2554 | btrfs_init_devices_late(fs_info); | 2554 | ret = btrfs_init_devices_late(fs_info); |
| 2555 | if (ret) | ||
| 2556 | goto out; | ||
| 2555 | 2557 | ||
| 2556 | /* | 2558 | /* |
| 2557 | * This tree can share blocks with some other fs tree during relocation | 2559 | * This tree can share blocks with some other fs tree during relocation |
| @@ -2672,17 +2672,11 @@ static int scrub_extent(struct scrub_ctx *sctx, struct map_lookup *map, · 2671 unmodified lines | |||
| 2672 | u8 csum[BTRFS_CSUM_SIZE]; | 2672 | u8 csum[BTRFS_CSUM_SIZE]; |
| 2673 | u32 blocksize; | 2673 | u32 blocksize; |
| 2674 | 2674 | ||
| 2675 | /* | ||
| 2676 | * Block size determines how many scrub_block will be allocated. Here | ||
| 2677 | * we use BTRFS_STRIPE_LEN (64KiB) as default limit, so we won't | ||
| 2678 | * allocate too many scrub_block, while still won't cause too large | ||
| 2679 | * bios for large extents. | ||
| 2680 | */ | ||
| 2681 | if (flags & BTRFS_EXTENT_FLAG_DATA) { | 2675 | if (flags & BTRFS_EXTENT_FLAG_DATA) { |
| 2682 | if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) | 2676 | if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) |
| 2683 | blocksize = map->stripe_len; | 2677 | blocksize = map->stripe_len; |
| 2684 | else | 2678 | else |
| 2685 | blocksize = BTRFS_STRIPE_LEN; | 2679 | blocksize = sctx->fs_info->sectorsize; |
| 2686 | spin_lock(&sctx->stat_lock); | 2680 | spin_lock(&sctx->stat_lock); |
| 2687 | sctx->stat.data_extents_scrubbed++; | 2681 | sctx->stat.data_extents_scrubbed++; |
| 2688 | sctx->stat.data_bytes_scrubbed += len; | 2682 | sctx->stat.data_bytes_scrubbed += len; |
| @@ -3917,7 +3911,6 @@ int scrub_enumerate_chunks(struct scrub_ctx *sctx, · 1228 unmodified lines | |||
| 3917 | 3911 | ||
| 3918 | if (sctx->is_dev_replace && btrfs_is_zoned(fs_info)) { | 3912 | if (sctx->is_dev_replace && btrfs_is_zoned(fs_info)) { |
| 3919 | if (!test_bit(BLOCK_GROUP_FLAG_TO_COPY, &cache->runtime_flags)) { | 3913 | if (!test_bit(BLOCK_GROUP_FLAG_TO_COPY, &cache->runtime_flags)) { |
| 3920 | spin_unlock(&cache->lock); | ||
| 3921 | btrfs_put_block_group(cache); | 3914 | btrfs_put_block_group(cache); |
| 3922 | goto skip; | 3915 | goto skip; |
| 3923 | } | 3916 | } |
| @@ -200,7 +200,7 @@ void btrfs_free_dummy_fs_info(struct btrfs_fs_info *fs_info) · 199 unmodified lines | |||
| 200 | 200 | ||
| 201 | void btrfs_free_dummy_root(struct btrfs_root *root) | 201 | void btrfs_free_dummy_root(struct btrfs_root *root) |
| 202 | { | 202 | { |
| 203 | if (!root) | 203 | if (IS_ERR_OR_NULL(root)) |
| 204 | return; | 204 | return; |
| 205 | /* Will be freed by btrfs_free_fs_roots */ | 205 | /* Will be freed by btrfs_free_fs_roots */ |
| 206 | if (WARN_ON(test_bit(BTRFS_ROOT_IN_RADIX, &root->state))) | 206 | if (WARN_ON(test_bit(BTRFS_ROOT_IN_RADIX, &root->state))) |
| @@ -1011,6 +1011,18 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig) · 1010 unmodified lines | |||
| 1011 | rcu_assign_pointer(device->name, name); | 1011 | rcu_assign_pointer(device->name, name); |
| 1012 | } | 1012 | } |
| 1013 | 1013 | ||
| 1014 | if (orig_dev->zone_info) { | ||
| 1015 | struct btrfs_zoned_device_info *zone_info; | ||
| 1016 | |||
| 1017 | zone_info = btrfs_clone_dev_zone_info(orig_dev); | ||
| 1018 | if (!zone_info) { | ||
| 1019 | btrfs_free_device(device); | ||
| 1020 | ret = -ENOMEM; | ||
| 1021 | goto error; | ||
| 1022 | } | ||
| 1023 | device->zone_info = zone_info; | ||
| 1024 | } | ||
| 1025 | |||
| 1014 | list_add(&device->dev_list, &fs_devices->devices); | 1026 | list_add(&device->dev_list, &fs_devices->devices); |
| 1015 | device->fs_devices = fs_devices; | 1027 | device->fs_devices = fs_devices; |
| 1016 | fs_devices->num_devices++; | 1028 | fs_devices->num_devices++; |
| @@ -6918,18 +6930,18 @@ static bool dev_args_match_fs_devices(const struct btrfs_dev_lookup_args *args, · 5901 unmodified lines | |||
| 6918 | static bool dev_args_match_device(const struct btrfs_dev_lookup_args *args, | 6930 | static bool dev_args_match_device(const struct btrfs_dev_lookup_args *args, |
| 6919 | const struct btrfs_device *device) | 6931 | const struct btrfs_device *device) |
| 6920 | { | 6932 | { |
| 6921 | ASSERT((args->devid != (u64)-1) || args->missing); | 6933 | if (args->missing) { |
| 6934 | if (test_bit(BTRFS_DEV_STATE_IN_FS_METADATA, &device->dev_state) && | ||
| 6935 | !device->bdev) | ||
| 6936 | return true; | ||
| 6937 | return false; | ||
| 6938 | } | ||
| 6922 | 6939 | ||
| 6923 | if ((args->devid != (u64)-1) && device->devid != args->devid) | 6940 | if (device->devid != args->devid) |
| 6924 | return false; | 6941 | return false; |
| 6925 | if (args->uuid && memcmp(device->uuid, args->uuid, BTRFS_UUID_SIZE) != 0) | 6942 | if (args->uuid && memcmp(device->uuid, args->uuid, BTRFS_UUID_SIZE) != 0) |
| 6926 | return false; | 6943 | return false; |
| 6927 | if (!args->missing) | 6944 | return true; |
| 6928 | return true; | ||
| 6929 | if (test_bit(BTRFS_DEV_STATE_IN_FS_METADATA, &device->dev_state) && | ||
| 6930 | !device->bdev) | ||
| 6931 | return true; | ||
| 6932 | return false; | ||
| 6933 | } | 6945 | } |
| 6934 | 6946 | ||
| 6935 | /* | 6947 | /* |
| @@ -7744,10 +7756,11 @@ error: · 808 unmodified lines | |||
| 7744 | return ret; | 7756 | return ret; |
| 7745 | } | 7757 | } |
| 7746 | 7758 | ||
| 7747 | void btrfs_init_devices_late(struct btrfs_fs_info *fs_info) | 7759 | int btrfs_init_devices_late(struct btrfs_fs_info *fs_info) |
| 7748 | { | 7760 | { |
| 7749 | struct btrfs_fs_devices *fs_devices = fs_info->fs_devices, *seed_devs; | 7761 | struct btrfs_fs_devices *fs_devices = fs_info->fs_devices, *seed_devs; |
| 7750 | struct btrfs_device *device; | 7762 | struct btrfs_device *device; |
| 7763 | int ret = 0; | ||
| 7751 | 7764 | ||
| 7752 | fs_devices->fs_info = fs_info; | 7765 | fs_devices->fs_info = fs_info; |
| 7753 | 7766 | ||
| @@ -7756,12 +7769,18 @@ void btrfs_init_devices_late(struct btrfs_fs_info *fs_info) · 2 unmodified lines | |||
| 7756 | device->fs_info = fs_info; | 7769 | device->fs_info = fs_info; |
| 7757 | 7770 | ||
| 7758 | list_for_each_entry(seed_devs, &fs_devices->seed_list, seed_list) { | 7771 | list_for_each_entry(seed_devs, &fs_devices->seed_list, seed_list) { |
| 7759 | list_for_each_entry(device, &seed_devs->devices, dev_list) | 7772 | list_for_each_entry(device, &seed_devs->devices, dev_list) { |
| 7760 | device->fs_info = fs_info; | 7773 | device->fs_info = fs_info; |
| 7774 | ret = btrfs_get_dev_zone_info(device, false); | ||
| 7775 | if (ret) | ||
| 7776 | break; | ||
| 7777 | } | ||
| 7761 | 7778 | ||
| 7762 | seed_devs->fs_info = fs_info; | 7779 | seed_devs->fs_info = fs_info; |
| 7763 | } | 7780 | } |
| 7764 | mutex_unlock(&fs_devices->device_list_mutex); | 7781 | mutex_unlock(&fs_devices->device_list_mutex); |
| 7782 | |||
| 7783 | return ret; | ||
| 7765 | } | 7784 | } |
| 7766 | 7785 | ||
| 7767 | static u64 btrfs_dev_stats_value(const struct extent_buffer *eb, | 7786 | static u64 btrfs_dev_stats_value(const struct extent_buffer *eb, |
| @@ -671,7 +671,7 @@ int find_free_dev_extent(struct btrfs_device *device, u64 num_bytes, · 670 unmodified lines | |||
| 671 | void btrfs_dev_stat_inc_and_print(struct btrfs_device *dev, int index); | 671 | void btrfs_dev_stat_inc_and_print(struct btrfs_device *dev, int index); |
| 672 | int btrfs_get_dev_stats(struct btrfs_fs_info *fs_info, | 672 | int btrfs_get_dev_stats(struct btrfs_fs_info *fs_info, |
| 673 | struct btrfs_ioctl_get_dev_stats *stats); | 673 | struct btrfs_ioctl_get_dev_stats *stats); |
| 674 | void btrfs_init_devices_late(struct btrfs_fs_info *fs_info); | 674 | int btrfs_init_devices_late(struct btrfs_fs_info *fs_info); |
| 675 | int btrfs_init_dev_stats(struct btrfs_fs_info *fs_info); | 675 | int btrfs_init_dev_stats(struct btrfs_fs_info *fs_info); |
| 676 | int btrfs_run_dev_stats(struct btrfs_trans_handle *trans); | 676 | int btrfs_run_dev_stats(struct btrfs_trans_handle *trans); |
| 677 | void btrfs_rm_dev_replace_remove_srcdev(struct btrfs_device *srcdev); | 677 | void btrfs_rm_dev_replace_remove_srcdev(struct btrfs_device *srcdev); |
| @@ -639,6 +639,46 @@ void btrfs_destroy_dev_zone_info(struct btrfs_device *device) · 638 unmodified lines | |||
| 639 | device->zone_info = NULL; | 639 | device->zone_info = NULL; |
| 640 | } | 640 | } |
| 641 | 641 | ||
| 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 | |||
| 642 | int btrfs_get_dev_zone(struct btrfs_device *device, u64 pos, | 682 | int btrfs_get_dev_zone(struct btrfs_device *device, u64 pos, |
| 643 | struct blk_zone *zone) | 683 | struct blk_zone *zone) |
| 644 | { | 684 | { |
| @@ -36,6 +36,7 @@ int btrfs_get_dev_zone(struct btrfs_device *device, u64 pos, · 35 unmodified lines | |||
| 36 | int btrfs_get_dev_zone_info_all_devices(struct btrfs_fs_info *fs_info); | 36 | int btrfs_get_dev_zone_info_all_devices(struct btrfs_fs_info *fs_info); |
| 37 | int btrfs_get_dev_zone_info(struct btrfs_device *device, bool populate_cache); | 37 | int btrfs_get_dev_zone_info(struct btrfs_device *device, bool populate_cache); |
| 38 | void btrfs_destroy_dev_zone_info(struct btrfs_device *device); | 38 | 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); | ||
| 39 | int btrfs_check_zoned_mode(struct btrfs_fs_info *fs_info); | 40 | int btrfs_check_zoned_mode(struct btrfs_fs_info *fs_info); |
| 40 | int btrfs_check_mountopts_zoned(struct btrfs_fs_info *info); | 41 | int btrfs_check_mountopts_zoned(struct btrfs_fs_info *info); |
| 41 | int btrfs_sb_log_location_bdev(struct block_device *bdev, int mirror, int rw, | 42 | 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 | |||
| 103 | 104 | ||
| 104 | static inline void btrfs_destroy_dev_zone_info(struct btrfs_device *device) { } | 105 | static inline void btrfs_destroy_dev_zone_info(struct btrfs_device *device) { } |
| 105 | 106 | ||
| 107 | /* | ||
| 108 | * In case the kernel is compiled without CONFIG_BLK_DEV_ZONED we'll never call | ||
| 109 | * into btrfs_clone_dev_zone_info() so it's safe to return NULL here. | ||
| 110 | */ | ||
| 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 | |||
| 106 | static inline int btrfs_check_zoned_mode(const struct btrfs_fs_info *fs_info) | 117 | static inline int btrfs_check_zoned_mode(const struct btrfs_fs_info *fs_info) |
| 107 | { | 118 | { |
| 108 | if (!btrfs_is_zoned(fs_info)) | 119 | if (!btrfs_is_zoned(fs_info)) |
| @@ -1412,8 +1412,8 @@ static void z_erofs_submit_queue(struct z_erofs_decompress_frontend *f, · 1411 unmodified lines | |||
| 1412 | struct block_device *last_bdev; | 1412 | struct block_device *last_bdev; |
| 1413 | unsigned int nr_bios = 0; | 1413 | unsigned int nr_bios = 0; |
| 1414 | struct bio *bio = NULL; | 1414 | struct bio *bio = NULL; |
| 1415 | /* initialize to 1 to make skip psi_memstall_leave unless needed */ | 1415 | unsigned long pflags; |
| 1416 | unsigned long pflags = 1; | 1416 | int memstall = 0; |
| 1417 | 1417 | ||
| 1418 | bi_private = jobqueueset_init(sb, q, fgq, force_fg); | 1418 | bi_private = jobqueueset_init(sb, q, fgq, force_fg); |
| 1419 | qtail[JQ_BYPASS] = &q[JQ_BYPASS]->head; | 1419 | qtail[JQ_BYPASS] = &q[JQ_BYPASS]->head; |
| @@ -1463,14 +1463,18 @@ static void z_erofs_submit_queue(struct z_erofs_decompress_frontend *f, · 43 unmodified lines | |||
| 1463 | if (bio && (cur != last_index + 1 || | 1463 | if (bio && (cur != last_index + 1 || |
| 1464 | last_bdev != mdev.m_bdev)) { | 1464 | last_bdev != mdev.m_bdev)) { |
| 1465 | submit_bio_retry: | 1465 | submit_bio_retry: |
| 1466 | if (!pflags) | ||
| 1467 | psi_memstall_leave(&pflags); | ||
| 1468 | submit_bio(bio); | 1466 | submit_bio(bio); |
| 1467 | if (memstall) { | ||
| 1468 | psi_memstall_leave(&pflags); | ||
| 1469 | memstall = 0; | ||
| 1470 | } | ||
| 1469 | bio = NULL; | 1471 | bio = NULL; |
| 1470 | } | 1472 | } |
| 1471 | 1473 | ||
| 1472 | if (unlikely(PageWorkingset(page))) | 1474 | if (unlikely(PageWorkingset(page)) && !memstall) { |
| 1473 | psi_memstall_enter(&pflags); | 1475 | psi_memstall_enter(&pflags); |
| 1476 | memstall = 1; | ||
| 1477 | } | ||
| 1474 | 1478 | ||
| 1475 | if (!bio) { | 1479 | if (!bio) { |
| 1476 | bio = bio_alloc(mdev.m_bdev, BIO_MAX_VECS, | 1480 | bio = bio_alloc(mdev.m_bdev, BIO_MAX_VECS, |
| @@ -1500,9 +1504,9 @@ submit_bio_retry: · 23 unmodified lines | |||
| 1500 | } while (owned_head != Z_EROFS_PCLUSTER_TAIL); | 1504 | } while (owned_head != Z_EROFS_PCLUSTER_TAIL); |
| 1501 | 1505 | ||
| 1502 | if (bio) { | 1506 | if (bio) { |
| 1503 | if (!pflags) | ||
| 1504 | psi_memstall_leave(&pflags); | ||
| 1505 | submit_bio(bio); | 1507 | submit_bio(bio); |
| 1508 | if (memstall) | ||
| 1509 | psi_memstall_leave(&pflags); | ||
| 1506 | } | 1510 | } |
| 1507 | 1511 | ||
| 1508 | /* | 1512 | /* |
| @@ -328,6 +328,12 @@ static ssize_t hugetlbfs_read_iter(struct kiocb *iocb, struct iov_iter *to) · 327 unmodified lines | |||
| 328 | } else { | 328 | } else { |
| 329 | unlock_page(page); | 329 | unlock_page(page); |
| 330 | 330 | ||
| 331 | if (PageHWPoison(page)) { | ||
| 332 | put_page(page); | ||
| 333 | retval = -EIO; | ||
| 334 | break; | ||
| 335 | } | ||
| 336 | |||
| 331 | /* | 337 | /* |
| 332 | * We have the page, copy it to user space buffer. | 338 | * We have the page, copy it to user space buffer. |
| 333 | */ | 339 | */ |
| @@ -1111,13 +1117,6 @@ static int hugetlbfs_migrate_folio(struct address_space *mapping, · 777 unmodified lines | |||
| 1111 | static int hugetlbfs_error_remove_page(struct address_space *mapping, | 1117 | static int hugetlbfs_error_remove_page(struct address_space *mapping, |
| 1112 | struct page *page) | 1118 | struct page *page) |
| 1113 | { | 1119 | { |
| 1114 | struct inode *inode = mapping->host; | ||
| 1115 | pgoff_t index = page->index; | ||
| 1116 | |||
| 1117 | hugetlb_delete_from_page_cache(page); | ||
| 1118 | if (unlikely(hugetlb_unreserve_pages(inode, index, index + 1, 1))) | ||
| 1119 | hugetlb_fix_reserve_counts(inode); | ||
| 1120 | |||
| 1121 | return 0; | 1120 | return 0; |
| 1122 | } | 1121 | } |
| 1123 | 1122 | ||
| @@ -1076,6 +1076,7 @@ retry: · 1075 unmodified lines | |||
| 1076 | goto open_file; | 1076 | goto open_file; |
| 1077 | 1077 | ||
| 1078 | nfsd_file_slab_free(&nf->nf_rcu); | 1078 | nfsd_file_slab_free(&nf->nf_rcu); |
| 1079 | nf = NULL; | ||
| 1079 | if (ret == -EEXIST) | 1080 | if (ret == -EEXIST) |
| 1080 | goto retry; | 1081 | goto retry; |
| 1081 | trace_nfsd_file_insert_err(rqstp, key.inode, may_flags, ret); | 1082 | trace_nfsd_file_insert_err(rqstp, key.inode, may_flags, ret); |
| @@ -5382,6 +5382,7 @@ nfsd4_verify_deleg_dentry(struct nfsd4_open *open, struct nfs4_file *fp, · 5381 unmodified lines | |||
| 5382 | if (err) | 5382 | if (err) |
| 5383 | return -EAGAIN; | 5383 | return -EAGAIN; |
| 5384 | 5384 | ||
| 5385 | exp_put(exp); | ||
| 5385 | dput(child); | 5386 | dput(child); |
| 5386 | if (child != file_dentry(fp->fi_deleg_file->nf_file)) | 5387 | if (child != file_dentry(fp->fi_deleg_file->nf_file)) |
| 5387 | return -EAGAIN; | 5388 | return -EAGAIN; |
| @@ -317,7 +317,7 @@ void nilfs_relax_pressure_in_lock(struct super_block *sb) · 316 unmodified lines | |||
| 317 | struct the_nilfs *nilfs = sb->s_fs_info; | 317 | struct the_nilfs *nilfs = sb->s_fs_info; |
| 318 | struct nilfs_sc_info *sci = nilfs->ns_writer; | 318 | struct nilfs_sc_info *sci = nilfs->ns_writer; |
| 319 | 319 | ||
| 320 | if (!sci || !sci->sc_flush_request) | 320 | if (sb_rdonly(sb) || unlikely(!sci) || !sci->sc_flush_request) |
| 321 | return; | 321 | return; |
| 322 | 322 | ||
| 323 | set_bit(NILFS_SC_PRIOR_FLUSH, &sci->sc_flags); | 323 | set_bit(NILFS_SC_PRIOR_FLUSH, &sci->sc_flags); |
| @@ -2242,7 +2242,7 @@ int nilfs_construct_segment(struct super_block *sb) · 1918 unmodified lines | |||
| 2242 | struct nilfs_sc_info *sci = nilfs->ns_writer; | 2242 | struct nilfs_sc_info *sci = nilfs->ns_writer; |
| 2243 | struct nilfs_transaction_info *ti; | 2243 | struct nilfs_transaction_info *ti; |
| 2244 | 2244 | ||
| 2245 | if (!sci) | 2245 | if (sb_rdonly(sb) || unlikely(!sci)) |
| 2246 | return -EROFS; | 2246 | return -EROFS; |
| 2247 | 2247 | ||
| 2248 | /* A call inside transactions causes a deadlock. */ | 2248 | /* A call inside transactions causes a deadlock. */ |
| @@ -2280,7 +2280,7 @@ int nilfs_construct_dsync_segment(struct super_block *sb, struct inode *inode, · 31 unmodified lines | |||
| 2280 | struct nilfs_transaction_info ti; | 2280 | struct nilfs_transaction_info ti; |
| 2281 | int err = 0; | 2281 | int err = 0; |
| 2282 | 2282 | ||
| 2283 | if (!sci) | 2283 | if (sb_rdonly(sb) || unlikely(!sci)) |
| 2284 | return -EROFS; | 2284 | return -EROFS; |
| 2285 | 2285 | ||
| 2286 | nilfs_transaction_lock(sb, &ti, 0); | 2286 | nilfs_transaction_lock(sb, &ti, 0); |
| @@ -2776,11 +2776,12 @@ int nilfs_attach_log_writer(struct super_block *sb, struct nilfs_root *root) · 489 unmodified lines | |||
| 2776 | 2776 | ||
| 2777 | if (nilfs->ns_writer) { | 2777 | if (nilfs->ns_writer) { |
| 2778 | /* | 2778 | /* |
| 2779 | * This happens if the filesystem was remounted | 2779 | * This happens if the filesystem is made read-only by |
| 2780 | * read/write after nilfs_error degenerated it into a | 2780 | * __nilfs_error or nilfs_remount and then remounted |
| 2781 | * read-only mount. | 2781 | * read/write. In these cases, reuse the existing |
| 2782 | * writer. | ||
| 2782 | */ | 2783 | */ |
| 2783 | nilfs_detach_log_writer(sb); | 2784 | return 0; |
| 2784 | } | 2785 | } |
| 2785 | 2786 | ||
| 2786 | nilfs->ns_writer = nilfs_segctor_new(sb, root); | 2787 | nilfs->ns_writer = nilfs_segctor_new(sb, root); |
| @@ -1133,8 +1133,6 @@ static int nilfs_remount(struct super_block *sb, int *flags, char *data) · 1132 unmodified lines | |||
| 1133 | if ((bool)(*flags & SB_RDONLY) == sb_rdonly(sb)) | 1133 | if ((bool)(*flags & SB_RDONLY) == sb_rdonly(sb)) |
| 1134 | goto out; | 1134 | goto out; |
| 1135 | if (*flags & SB_RDONLY) { | 1135 | if (*flags & SB_RDONLY) { |
| 1136 | /* Shutting down log writer */ | ||
| 1137 | nilfs_detach_log_writer(sb); | ||
| 1138 | sb->s_flags |= SB_RDONLY; | 1136 | sb->s_flags |= SB_RDONLY; |
| 1139 | 1137 | ||
| 1140 | /* | 1138 | /* |
| @@ -690,9 +690,7 @@ int nilfs_count_free_blocks(struct the_nilfs *nilfs, sector_t *nblocks) · 689 unmodified lines | |||
| 690 | { | 690 | { |
| 691 | unsigned long ncleansegs; | 691 | unsigned long ncleansegs; |
| 692 | 692 | ||
| 693 | down_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem); | ||
| 694 | ncleansegs = nilfs_sufile_get_ncleansegs(nilfs->ns_sufile); | 693 | ncleansegs = nilfs_sufile_get_ncleansegs(nilfs->ns_sufile); |
| 695 | up_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem); | ||
| 696 | *nblocks = (sector_t)ncleansegs * nilfs->ns_blocks_per_segment; | 694 | *nblocks = (sector_t)ncleansegs * nilfs->ns_blocks_per_segment; |
| 697 | return 0; | 695 | return 0; |
| 698 | } | 696 | } |
| @@ -240,7 +240,7 @@ static struct fileIdentDesc *udf_find_entry(struct inode *dir, · 239 unmodified lines | |||
| 240 | poffset - lfi); | 240 | poffset - lfi); |
| 241 | else { | 241 | else { |
| 242 | if (!copy_name) { | 242 | if (!copy_name) { |
| 243 | copy_name = kmalloc(UDF_NAME_LEN, | 243 | copy_name = kmalloc(UDF_NAME_LEN_CS0, |
| 244 | GFP_NOFS); | 244 | GFP_NOFS); |
| 245 | if (!copy_name) { | 245 | if (!copy_name) { |
| 246 | fi = ERR_PTR(-ENOMEM); | 246 | fi = ERR_PTR(-ENOMEM); |
| @@ -1630,17 +1630,20 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx, · 1629 unmodified lines | |||
| 1630 | NULL_VM_UFFD_CTX, anon_vma_name(vma)); | 1630 | NULL_VM_UFFD_CTX, anon_vma_name(vma)); |
| 1631 | if (prev) { | 1631 | if (prev) { |
| 1632 | vma = prev; | 1632 | vma = prev; |
| 1633 | mas_pause(&mas); | ||
| 1633 | goto next; | 1634 | goto next; |
| 1634 | } | 1635 | } |
| 1635 | if (vma->vm_start < start) { | 1636 | if (vma->vm_start < start) { |
| 1636 | ret = split_vma(mm, vma, start, 1); | 1637 | ret = split_vma(mm, vma, start, 1); |
| 1637 | if (ret) | 1638 | if (ret) |
| 1638 | break; | 1639 | break; |
| 1640 | mas_pause(&mas); | ||
| 1639 | } | 1641 | } |
| 1640 | if (vma->vm_end > end) { | 1642 | if (vma->vm_end > end) { |
| 1641 | ret = split_vma(mm, vma, end, 0); | 1643 | ret = split_vma(mm, vma, end, 0); |
| 1642 | if (ret) | 1644 | if (ret) |
| 1643 | break; | 1645 | break; |
| 1646 | mas_pause(&mas); | ||
| 1644 | } | 1647 | } |
| 1645 | next: | 1648 | next: |
| 1646 | /* | 1649 | /* |
| @@ -102,6 +102,15 @@ struct ms_hyperv_tsc_page { · 101 unmodified lines | |||
| 102 | volatile s64 tsc_offset; | 102 | volatile s64 tsc_offset; |
| 103 | } __packed; | 103 | } __packed; |
| 104 | 104 | ||
| 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 | |||
| 105 | /* | 114 | /* |
| 106 | * The guest OS needs to register the guest ID with the hypervisor. | 115 | * The guest OS needs to register the guest ID with the hypervisor. |
| 107 | * The guest ID is a 64 bit entity and the structure of this ID is | 116 | * The guest ID is a 64 bit entity and the structure of this ID is |
| @@ -347,6 +347,7 @@ · 346 unmodified lines | |||
| 347 | #define DATA_DATA \ | 347 | #define DATA_DATA \ |
| 348 | *(.xiptext) \ | 348 | *(.xiptext) \ |
| 349 | *(DATA_MAIN) \ | 349 | *(DATA_MAIN) \ |
| 350 | *(.data..decrypted) \ | ||
| 350 | *(.ref.data) \ | 351 | *(.ref.data) \ |
| 351 | *(.data..shared_aligned) /* percpu related */ \ | 352 | *(.data..shared_aligned) /* percpu related */ \ |
| 352 | MEM_KEEP(init.data*) \ | 353 | MEM_KEEP(init.data*) \ |
| @@ -995,7 +996,6 @@ · 642 unmodified lines | |||
| 995 | #ifdef CONFIG_AMD_MEM_ENCRYPT | 996 | #ifdef CONFIG_AMD_MEM_ENCRYPT |
| 996 | #define PERCPU_DECRYPTED_SECTION \ | 997 | #define PERCPU_DECRYPTED_SECTION \ |
| 997 | . = ALIGN(PAGE_SIZE); \ | 998 | . = ALIGN(PAGE_SIZE); \ |
| 998 | *(.data..decrypted) \ | ||
| 999 | *(.data..percpu..decrypted) \ | 999 | *(.data..percpu..decrypted) \ |
| 1000 | . = ALIGN(PAGE_SIZE); | 1000 | . = ALIGN(PAGE_SIZE); |
| 1001 | #else | 1001 | #else |
| @@ -152,6 +152,22 @@ static inline bool can_is_canxl_dev_mtu(unsigned int mtu) · 151 unmodified lines | |||
| 152 | return (mtu >= CANXL_MIN_MTU && mtu <= CANXL_MAX_MTU); | 152 | return (mtu >= CANXL_MIN_MTU && mtu <= CANXL_MAX_MTU); |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | /* drop skb if it does not contain a valid CAN frame for sending */ | ||
| 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 | |||
| 155 | void can_setup(struct net_device *dev); | 171 | void can_setup(struct net_device *dev); |
| 156 | 172 | ||
| 157 | struct net_device *alloc_candev_mqs(int sizeof_priv, unsigned int echo_skb_max, | 173 | struct net_device *alloc_candev_mqs(int sizeof_priv, unsigned int echo_skb_max, |
| @@ -389,6 +389,7 @@ void efi_native_runtime_setup(void); · 388 unmodified lines | |||
| 389 | #define EFI_LOAD_FILE2_PROTOCOL_GUID EFI_GUID(0x4006c0c1, 0xfcb3, 0x403e, 0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d) | 389 | #define EFI_LOAD_FILE2_PROTOCOL_GUID EFI_GUID(0x4006c0c1, 0xfcb3, 0x403e, 0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d) |
| 390 | #define EFI_RT_PROPERTIES_TABLE_GUID EFI_GUID(0xeb66918a, 0x7eef, 0x402a, 0x84, 0x2e, 0x93, 0x1d, 0x21, 0xc3, 0x8a, 0xe9) | 390 | #define EFI_RT_PROPERTIES_TABLE_GUID EFI_GUID(0xeb66918a, 0x7eef, 0x402a, 0x84, 0x2e, 0x93, 0x1d, 0x21, 0xc3, 0x8a, 0xe9) |
| 391 | #define EFI_DXE_SERVICES_TABLE_GUID EFI_GUID(0x05ad34ba, 0x6f02, 0x4214, 0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9) | 391 | #define EFI_DXE_SERVICES_TABLE_GUID EFI_GUID(0x05ad34ba, 0x6f02, 0x4214, 0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9) |
| 392 | #define EFI_SMBIOS_PROTOCOL_GUID EFI_GUID(0x03583ff6, 0xcb36, 0x4940, 0x94, 0x7e, 0xb9, 0xb3, 0x9f, 0x4a, 0xfa, 0xf7) | ||
| 392 | 393 | ||
| 393 | #define EFI_IMAGE_SECURITY_DATABASE_GUID EFI_GUID(0xd719b2cb, 0x3d3a, 0x4596, 0xa3, 0xbc, 0xda, 0xd0, 0x0e, 0x67, 0x65, 0x6f) | 394 | #define EFI_IMAGE_SECURITY_DATABASE_GUID EFI_GUID(0xd719b2cb, 0x3d3a, 0x4596, 0xa3, 0xbc, 0xda, 0xd0, 0x0e, 0x67, 0x65, 0x6f) |
| 394 | #define EFI_SHIM_LOCK_GUID EFI_GUID(0x605dab50, 0xe046, 0x4300, 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23) | 395 | #define EFI_SHIM_LOCK_GUID EFI_GUID(0x605dab50, 0xe046, 0x4300, 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23) |
| @@ -638,6 +638,12 @@ static inline void mt_set_in_rcu(struct maple_tree *mt) · 637 unmodified lines | |||
| 638 | } | 638 | } |
| 639 | } | 639 | } |
| 640 | 640 | ||
| 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 | |||
| 641 | void *mt_find(struct maple_tree *mt, unsigned long *index, unsigned long max); | 647 | void *mt_find(struct maple_tree *mt, unsigned long *index, unsigned long max); |
| 642 | void *mt_find_after(struct maple_tree *mt, unsigned long *index, | 648 | void *mt_find_after(struct maple_tree *mt, unsigned long *index, |
| 643 | unsigned long max); | 649 | unsigned long max); |
| @@ -664,6 +670,7 @@ extern atomic_t maple_tree_tests_passed; · 20 unmodified lines | |||
| 664 | 670 | ||
| 665 | void mt_dump(const struct maple_tree *mt); | 671 | void mt_dump(const struct maple_tree *mt); |
| 666 | void mt_validate(struct maple_tree *mt); | 672 | void mt_validate(struct maple_tree *mt); |
| 673 | void mt_cache_shrink(void); | ||
| 667 | #define MT_BUG_ON(__tree, __x) do { \ | 674 | #define MT_BUG_ON(__tree, __x) do { \ |
| 668 | atomic_inc(&maple_tree_tests_run); \ | 675 | atomic_inc(&maple_tree_tests_run); \ |
| 669 | if (__x) { \ | 676 | if (__x) { \ |
| @@ -376,7 +376,7 @@ static inline void sk_psock_report_error(struct sk_psock *psock, int err) · 375 unmodified lines | |||
| 376 | } | 376 | } |
| 377 | 377 | ||
| 378 | struct sk_psock *sk_psock_init(struct sock *sk, int node); | 378 | 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); |
| 380 | 380 | ||
| 381 | #if IS_ENABLED(CONFIG_BPF_STREAM_PARSER) | 381 | #if IS_ENABLED(CONFIG_BPF_STREAM_PARSER) |
| 382 | int sk_psock_init_strp(struct sock *sk, struct sk_psock *psock); | 382 | int sk_psock_init_strp(struct sock *sk, struct sk_psock *psock); |
| @@ -470,35 +470,12 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node) __assume_kmalloc_alignm · 469 unmodified lines | |||
| 470 | void *kmem_cache_alloc_node(struct kmem_cache *s, gfp_t flags, int node) __assume_slab_alignment | 470 | void *kmem_cache_alloc_node(struct kmem_cache *s, gfp_t flags, int node) __assume_slab_alignment |
| 471 | __malloc; | 471 | __malloc; |
| 472 | 472 | ||
| 473 | #ifdef CONFIG_TRACING | ||
| 474 | void *kmalloc_trace(struct kmem_cache *s, gfp_t flags, size_t size) | 473 | void *kmalloc_trace(struct kmem_cache *s, gfp_t flags, size_t size) |
| 475 | __assume_kmalloc_alignment __alloc_size(3); | 474 | __assume_kmalloc_alignment __alloc_size(3); |
| 476 | 475 | ||
| 477 | void *kmalloc_node_trace(struct kmem_cache *s, gfp_t gfpflags, | 476 | void *kmalloc_node_trace(struct kmem_cache *s, gfp_t gfpflags, |
| 478 | int node, size_t size) __assume_kmalloc_alignment | 477 | int node, size_t size) __assume_kmalloc_alignment |
| 479 | __alloc_size(4); | 478 | __alloc_size(4); |
| 480 | #else /* CONFIG_TRACING */ | ||
| 481 | /* Save a function call when CONFIG_TRACING=n */ | ||
| 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 | |||
| 502 | void *kmalloc_large(size_t size, gfp_t flags) __assume_page_alignment | 479 | void *kmalloc_large(size_t size, gfp_t flags) __assume_page_alignment |
| 503 | __alloc_size(1); | 480 | __alloc_size(1); |
| 504 | 481 | ||
| @@ -254,7 +254,7 @@ struct panfrost_dump_object_header { · 253 unmodified lines | |||
| 254 | __u64 nbos; | 254 | __u64 nbos; |
| 255 | } reghdr; | 255 | } reghdr; |
| 256 | 256 | ||
| 257 | struct pan_bomap_hdr { | 257 | struct { |
| 258 | __u32 valid; | 258 | __u32 valid; |
| 259 | __u64 iova; | 259 | __u64 iova; |
| 260 | __u32 data[2]; | 260 | __u32 data[2]; |
| @@ -187,7 +187,7 @@ · 186 unmodified lines | |||
| 187 | #define AUDIT_MAX_KEY_LEN 256 | 187 | #define AUDIT_MAX_KEY_LEN 256 |
| 188 | #define AUDIT_BITMASK_SIZE 64 | 188 | #define AUDIT_BITMASK_SIZE 64 |
| 189 | #define AUDIT_WORD(nr) ((__u32)((nr)/32)) | 189 | #define AUDIT_WORD(nr) ((__u32)((nr)/32)) |
| 190 | #define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr)*32)) | 190 | #define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr)*32)) |
| 191 | 191 | ||
| 192 | #define AUDIT_SYSCALL_CLASSES 16 | 192 | #define AUDIT_SYSCALL_CLASSES 16 |
| 193 | #define AUDIT_CLASS_DIR_WRITE 0 | 193 | #define AUDIT_CLASS_DIR_WRITE 0 |
| @@ -426,7 +426,7 @@ struct vfs_ns_cap_data { · 425 unmodified lines | |||
| 426 | */ | 426 | */ |
| 427 | 427 | ||
| 428 | #define CAP_TO_INDEX(x) ((x) >> 5) /* 1 << 5 == bits in __u32 */ | 428 | #define CAP_TO_INDEX(x) ((x) >> 5) /* 1 << 5 == bits in __u32 */ |
| 429 | #define CAP_TO_MASK(x) (1 << ((x) & 31)) /* mask for indexed __u32 */ | 429 | #define CAP_TO_MASK(x) (1U << ((x) & 31)) /* mask for indexed __u32 */ |
| 430 | 430 | ||
| 431 | 431 | ||
| 432 | #endif /* _UAPI_LINUX_CAPABILITY_H */ | 432 | #endif /* _UAPI_LINUX_CAPABILITY_H */ |
| @@ -29,6 +29,7 @@ enum idxd_scmd_stat { · 28 unmodified lines | |||
| 29 | IDXD_SCMD_WQ_NO_SIZE = 0x800e0000, | 29 | IDXD_SCMD_WQ_NO_SIZE = 0x800e0000, |
| 30 | IDXD_SCMD_WQ_NO_PRIV = 0x800f0000, | 30 | IDXD_SCMD_WQ_NO_PRIV = 0x800f0000, |
| 31 | IDXD_SCMD_WQ_IRQ_ERR = 0x80100000, | 31 | IDXD_SCMD_WQ_IRQ_ERR = 0x80100000, |
| 32 | IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000, | ||
| 32 | }; | 33 | }; |
| 33 | 34 | ||
| 34 | #define IDXD_SCMD_SOFTERR_MASK 0x80000000 | 35 | #define IDXD_SCMD_SOFTERR_MASK 0x80000000 |
| @@ -20,6 +20,7 @@ · 19 unmodified lines | |||
| 20 | #define _UAPI_LINUX_IN_H | 20 | #define _UAPI_LINUX_IN_H |
| 21 | 21 | ||
| 22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
| 23 | #include <linux/stddef.h> | ||
| 23 | #include <linux/libc-compat.h> | 24 | #include <linux/libc-compat.h> |
| 24 | #include <linux/socket.h> | 25 | #include <linux/socket.h> |
| 25 | 26 | ||
| @@ -222,7 +222,7 @@ enum io_uring_op { · 221 unmodified lines | |||
| 222 | 222 | ||
| 223 | /* | 223 | /* |
| 224 | * sqe->uring_cmd_flags | 224 | * 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 |
| 226 | * along with setting sqe->buf_index. | 226 | * along with setting sqe->buf_index. |
| 227 | */ | 227 | */ |
| 228 | #define IORING_URING_CMD_FIXED (1U << 0) | 228 | #define IORING_URING_CMD_FIXED (1U << 0) |
| @@ -176,6 +176,11 @@ static inline unsigned int __io_cqring_events(struct io_ring_ctx *ctx) · 175 unmodified lines | |||
| 176 | return ctx->cached_cq_tail - READ_ONCE(ctx->rings->cq.head); | 176 | return ctx->cached_cq_tail - READ_ONCE(ctx->rings->cq.head); |
| 177 | } | 177 | } |
| 178 | 178 | ||
| 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 | |||
| 179 | static bool io_match_linked(struct io_kiocb *head) | 184 | static bool io_match_linked(struct io_kiocb *head) |
| 180 | { | 185 | { |
| 181 | struct io_kiocb *req; | 186 | struct io_kiocb *req; |
| @@ -2315,7 +2320,7 @@ static inline bool io_has_work(struct io_ring_ctx *ctx) · 2133 unmodified lines | |||
| 2315 | static inline bool io_should_wake(struct io_wait_queue *iowq) | 2320 | static inline bool io_should_wake(struct io_wait_queue *iowq) |
| 2316 | { | 2321 | { |
| 2317 | struct io_ring_ctx *ctx = iowq->ctx; | 2322 | struct io_ring_ctx *ctx = iowq->ctx; |
| 2318 | int dist = ctx->cached_cq_tail - (int) iowq->cq_tail; | 2323 | int dist = READ_ONCE(ctx->rings->cq.tail) - (int) iowq->cq_tail; |
| 2319 | 2324 | ||
| 2320 | /* | 2325 | /* |
| 2321 | * Wake up if we have enough events, or if a timeout occurred since we | 2326 | * Wake up if we have enough events, or if a timeout occurred since we |
| @@ -2399,7 +2404,8 @@ static int io_cqring_wait(struct io_ring_ctx *ctx, int min_events, · 77 unmodified lines | |||
| 2399 | return ret; | 2404 | return ret; |
| 2400 | io_cqring_overflow_flush(ctx); | 2405 | io_cqring_overflow_flush(ctx); |
| 2401 | 2406 | ||
| 2402 | if (io_cqring_events(ctx) >= min_events) | 2407 | /* if user messes with these they will just get an early return */ |
| 2408 | if (__io_cqring_events_user(ctx) >= min_events) | ||
| 2403 | return 0; | 2409 | return 0; |
| 2404 | } while (ret > 0); | 2410 | } while (ret > 0); |
| 2405 | 2411 | ||
| @@ -346,6 +346,8 @@ int io_provide_buffers_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe · 345 unmodified lines | |||
| 346 | tmp = READ_ONCE(sqe->off); | 346 | tmp = READ_ONCE(sqe->off); |
| 347 | if (tmp > USHRT_MAX) | 347 | if (tmp > USHRT_MAX) |
| 348 | return -E2BIG; | 348 | return -E2BIG; |
| 349 | if (tmp + p->nbufs >= USHRT_MAX) | ||
| 350 | return -EINVAL; | ||
| 349 | p->bid = tmp; | 351 | p->bid = tmp; |
| 350 | return 0; | 352 | return 0; |
| 351 | } | 353 | } |
| @@ -116,6 +116,8 @@ static void io_poll_req_insert_locked(struct io_kiocb *req) · 115 unmodified lines | |||
| 116 | struct io_hash_table *table = &req->ctx->cancel_table_locked; | 116 | struct io_hash_table *table = &req->ctx->cancel_table_locked; |
| 117 | u32 index = hash_long(req->cqe.user_data, table->hash_bits); | 117 | u32 index = hash_long(req->cqe.user_data, table->hash_bits); |
| 118 | 118 | ||
| 119 | lockdep_assert_held(&req->ctx->uring_lock); | ||
| 120 | |||
| 119 | hlist_add_head(&req->hash_node, &table->hbs[index].list); | 121 | hlist_add_head(&req->hash_node, &table->hbs[index].list); |
| 120 | } | 122 | } |
| 121 | 123 | ||
| @@ -394,7 +396,8 @@ static int io_poll_wake(struct wait_queue_entry *wait, unsigned mode, int sync, · 272 unmodified lines | |||
| 394 | return 1; | 396 | return 1; |
| 395 | } | 397 | } |
| 396 | 398 | ||
| 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) | ||
| 398 | { | 401 | { |
| 399 | struct wait_queue_head *head; | 402 | struct wait_queue_head *head; |
| 400 | struct io_poll *poll = io_poll_get_single(req); | 403 | struct io_poll *poll = io_poll_get_single(req); |
| @@ -403,20 +406,20 @@ static void io_poll_double_prepare(struct io_kiocb *req) · 2 unmodified lines | |||
| 403 | rcu_read_lock(); | 406 | rcu_read_lock(); |
| 404 | head = smp_load_acquire(&poll->head); | 407 | head = smp_load_acquire(&poll->head); |
| 405 | /* | 408 | /* |
| 406 | * poll arm may not hold ownership and so race with | 409 | * poll arm might not hold ownership and so race for req->flags with |
| 407 | * io_poll_wake() by modifying req->flags. There is only one | 410 | * io_poll_wake(). There is only one poll entry queued, serialise with |
| 408 | * poll entry queued, serialise with it by taking its head lock. | 411 | * it by taking its head lock. As we're still arming the tw hanlder |
| 412 | * is not going to be run, so there are no races with it. | ||
| 409 | */ | 413 | */ |
| 410 | if (head) | 414 | if (head) { |
| 411 | spin_lock_irq(&head->lock); | 415 | spin_lock_irq(&head->lock); |
| 412 | 416 | req->flags |= REQ_F_DOUBLE_POLL; | |
| 413 | req->flags |= REQ_F_DOUBLE_POLL; | 417 | if (req->opcode == IORING_OP_POLL_ADD) |
| 414 | if (req->opcode == IORING_OP_POLL_ADD) | 418 | req->flags |= REQ_F_ASYNC_DATA; |
| 415 | req->flags |= REQ_F_ASYNC_DATA; | ||
| 416 | |||
| 417 | if (head) | ||
| 418 | spin_unlock_irq(&head->lock); | 419 | spin_unlock_irq(&head->lock); |
| 420 | } | ||
| 419 | rcu_read_unlock(); | 421 | rcu_read_unlock(); |
| 422 | return !!head; | ||
| 420 | } | 423 | } |
| 421 | 424 | ||
| 422 | static void __io_queue_proc(struct io_poll *poll, struct io_poll_table *pt, | 425 | 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 | |||
| 454 | /* mark as double wq entry */ | 457 | /* mark as double wq entry */ |
| 455 | wqe_private |= IO_WQE_F_DOUBLE; | 458 | wqe_private |= IO_WQE_F_DOUBLE; |
| 456 | io_init_poll_iocb(poll, first->events, first->wait.func); | 459 | io_init_poll_iocb(poll, first->events, first->wait.func); |
| 457 | io_poll_double_prepare(req); | 460 | if (!io_poll_double_prepare(req)) { |
| 461 | /* the request is completing, just back off */ | ||
| 462 | kfree(poll); | ||
| 463 | return; | ||
| 464 | } | ||
| 458 | *poll_ptr = poll; | 465 | *poll_ptr = poll; |
| 459 | } else { | 466 | } else { |
| 460 | /* fine to modify, there is no poll queued to race with us */ | 467 | /* fine to modify, there is no poll queued to race with us */ |
| @@ -1027,12 +1027,17 @@ out: · 1026 unmodified lines | |||
| 1027 | */ | 1027 | */ |
| 1028 | static void *realloc_array(void *arr, size_t old_n, size_t new_n, size_t size) | 1028 | static void *realloc_array(void *arr, size_t old_n, size_t new_n, size_t size) |
| 1029 | { | 1029 | { |
| 1030 | void *new_arr; | ||
| 1031 | |||
| 1030 | if (!new_n || old_n == new_n) | 1032 | if (!new_n || old_n == new_n) |
| 1031 | goto out; | 1033 | goto out; |
| 1032 | 1034 | ||
| 1033 | arr = krealloc_array(arr, new_n, size, GFP_KERNEL); | 1035 | new_arr = krealloc_array(arr, new_n, size, GFP_KERNEL); |
| 1034 | if (!arr) | 1036 | if (!new_arr) { |
| 1037 | kfree(arr); | ||
| 1035 | return NULL; | 1038 | return NULL; |
| 1039 | } | ||
| 1040 | arr = new_arr; | ||
| 1036 | 1041 | ||
| 1037 | if (new_n > old_n) | 1042 | if (new_n > old_n) |
| 1038 | memset(arr + old_n * size, 0, (new_n - old_n) * size); | 1043 | memset(arr + old_n * size, 0, (new_n - old_n) * size); |
| @@ -6618,8 +6623,12 @@ static int release_reference(struct bpf_verifier_env *env, · 5579 unmodified lines | |||
| 6618 | return err; | 6623 | return err; |
| 6619 | 6624 | ||
| 6620 | bpf_for_each_reg_in_vstate(env->cur_state, state, reg, ({ | 6625 | bpf_for_each_reg_in_vstate(env->cur_state, state, reg, ({ |
| 6621 | if (reg->ref_obj_id == ref_obj_id) | 6626 | if (reg->ref_obj_id == ref_obj_id) { |
| 6622 | __mark_reg_unknown(env, reg); | 6627 | if (!env->allow_ptr_leaks) |
| 6628 | __mark_reg_not_init(env, reg); | ||
| 6629 | else | ||
| 6630 | __mark_reg_unknown(env, reg); | ||
| 6631 | } | ||
| 6623 | })); | 6632 | })); |
| 6624 | 6633 | ||
| 6625 | return 0; | 6634 | return 0; |
| @@ -395,12 +395,12 @@ endif # DEBUG_INFO · 394 unmodified lines | |||
| 395 | config FRAME_WARN | 395 | config FRAME_WARN |
| 396 | int "Warn for stack frames larger than" | 396 | int "Warn for stack frames larger than" |
| 397 | range 0 8192 | 397 | range 0 8192 |
| 398 | default 0 if KMSAN | ||
| 398 | default 2048 if GCC_PLUGIN_LATENT_ENTROPY | 399 | default 2048 if GCC_PLUGIN_LATENT_ENTROPY |
| 399 | default 2048 if PARISC | 400 | default 2048 if PARISC |
| 400 | default 1536 if (!64BIT && XTENSA) | 401 | default 1536 if (!64BIT && XTENSA) |
| 401 | default 1024 if !64BIT | 402 | default 1024 if !64BIT |
| 402 | default 2048 if 64BIT | 403 | default 2048 if 64BIT |
| 403 | default 0 if KMSAN | ||
| 404 | help | 404 | help |
| 405 | Tell the compiler to warn at build time for stack frames larger than this. | 405 | Tell the compiler to warn at build time for stack frames larger than this. |
| 406 | Setting this too low will cause a lot of warnings. | 406 | Setting this too low will cause a lot of warnings. |
| @@ -2241,6 +2241,10 @@ config TEST_UUID · 1834 unmodified lines | |||
| 2241 | config TEST_XARRAY | 2241 | config TEST_XARRAY |
| 2242 | tristate "Test the XArray code at runtime" | 2242 | tristate "Test the XArray code at runtime" |
| 2243 | 2243 | ||
| 2244 | config TEST_MAPLE_TREE | ||
| 2245 | select DEBUG_MAPLE_TREE | ||
| 2246 | tristate "Test the Maple Tree code at runtime" | ||
| 2247 | |||
| 2244 | config TEST_RHASHTABLE | 2248 | config TEST_RHASHTABLE |
| 2245 | tristate "Perform selftest on resizable hash table" | 2249 | tristate "Perform selftest on resizable hash table" |
| 2246 | help | 2250 | help |
| @@ -12,6 +12,7 @@ config KMSAN · 11 unmodified lines | |||
| 12 | bool "KMSAN: detector of uninitialized values use" | 12 | bool "KMSAN: detector of uninitialized values use" |
| 13 | depends on HAVE_ARCH_KMSAN && HAVE_KMSAN_COMPILER | 13 | depends on HAVE_ARCH_KMSAN && HAVE_KMSAN_COMPILER |
| 14 | depends on SLUB && DEBUG_KERNEL && !KASAN && !KCSAN | 14 | depends on SLUB && DEBUG_KERNEL && !KASAN && !KCSAN |
| 15 | depends on !PREEMPT_RT | ||
| 15 | select STACKDEPOT | 16 | select STACKDEPOT |
| 16 | select STACKDEPOT_ALWAYS_INIT | 17 | select STACKDEPOT_ALWAYS_INIT |
| 17 | help | 18 | help |
| @@ -85,6 +85,7 @@ obj-$(CONFIG_TEST_BITMAP) += test_bitmap.o · 84 unmodified lines | |||
| 85 | obj-$(CONFIG_TEST_STRSCPY) += test_strscpy.o | 85 | obj-$(CONFIG_TEST_STRSCPY) += test_strscpy.o |
| 86 | obj-$(CONFIG_TEST_UUID) += test_uuid.o | 86 | obj-$(CONFIG_TEST_UUID) += test_uuid.o |
| 87 | obj-$(CONFIG_TEST_XARRAY) += test_xarray.o | 87 | obj-$(CONFIG_TEST_XARRAY) += test_xarray.o |
| 88 | obj-$(CONFIG_TEST_MAPLE_TREE) += test_maple_tree.o | ||
| 88 | obj-$(CONFIG_TEST_PARMAN) += test_parman.o | 89 | obj-$(CONFIG_TEST_PARMAN) += test_parman.o |
| 89 | obj-$(CONFIG_TEST_KMOD) += test_kmod.o | 90 | obj-$(CONFIG_TEST_KMOD) += test_kmod.o |
| 90 | obj-$(CONFIG_TEST_DEBUG_VIRTUAL) += test_debug_virtual.o | 91 | obj-$(CONFIG_TEST_DEBUG_VIRTUAL) += test_debug_virtual.o |
| @@ -183,10 +183,6 @@ static void ma_free_rcu(struct maple_node *node) · 182 unmodified lines | |||
| 183 | call_rcu(&node->rcu, mt_free_rcu); | 183 | call_rcu(&node->rcu, mt_free_rcu); |
| 184 | } | 184 | } |
| 185 | 185 | ||
| 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 | } | ||
| 190 | 186 | ||
| 191 | static void mas_set_height(struct ma_state *mas) | 187 | static void mas_set_height(struct ma_state *mas) |
| 192 | { | 188 | { |
| @@ -1209,7 +1205,6 @@ done: · 1016 unmodified lines | |||
| 1209 | static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp) | 1205 | static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp) |
| 1210 | { | 1206 | { |
| 1211 | struct maple_alloc *node; | 1207 | struct maple_alloc *node; |
| 1212 | struct maple_alloc **nodep = &mas->alloc; | ||
| 1213 | unsigned long allocated = mas_allocated(mas); | 1208 | unsigned long allocated = mas_allocated(mas); |
| 1214 | unsigned long success = allocated; | 1209 | unsigned long success = allocated; |
| 1215 | unsigned int requested = mas_alloc_req(mas); | 1210 | unsigned int requested = mas_alloc_req(mas); |
| @@ -1263,8 +1258,7 @@ static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp) · 47 unmodified lines | |||
| 1263 | node->node_count--; | 1258 | node->node_count--; |
| 1264 | 1259 | ||
| 1265 | success += count; | 1260 | success += count; |
| 1266 | nodep = &node->slot[0]; | 1261 | node = node->slot[0]; |
| 1267 | node = *nodep; | ||
| 1268 | requested -= count; | 1262 | requested -= count; |
| 1269 | } | 1263 | } |
| 1270 | mas->alloc->total = success; | 1264 | mas->alloc->total = success; |
| @@ -1357,6 +1351,7 @@ static inline struct maple_enode *mas_start(struct ma_state *mas) · 86 unmodified lines | |||
| 1357 | root = mas_root(mas); | 1351 | root = mas_root(mas); |
| 1358 | /* Tree with nodes */ | 1352 | /* Tree with nodes */ |
| 1359 | if (likely(xa_is_node(root))) { | 1353 | if (likely(xa_is_node(root))) { |
| 1354 | mas->depth = 1; | ||
| 1360 | mas->node = mte_safe_root(root); | 1355 | mas->node = mte_safe_root(root); |
| 1361 | return NULL; | 1356 | return NULL; |
| 1362 | } | 1357 | } |
| @@ -3608,8 +3603,7 @@ static inline int mas_commit_b_node(struct ma_wr_state *wr_mas, · 2245 unmodified lines | |||
| 3608 | node = mas_pop_node(wr_mas->mas); | 3603 | node = mas_pop_node(wr_mas->mas); |
| 3609 | node->parent = mas_mn(wr_mas->mas)->parent; | 3604 | node->parent = mas_mn(wr_mas->mas)->parent; |
| 3610 | wr_mas->mas->node = mt_mk_node(node, b_type); | 3605 | wr_mas->mas->node = mt_mk_node(node, b_type); |
| 3611 | mab_mas_cp(b_node, 0, b_end, wr_mas->mas, true); | 3606 | mab_mas_cp(b_node, 0, b_end, wr_mas->mas, false); |
| 3612 | |||
| 3613 | mas_replace(wr_mas->mas, false); | 3607 | mas_replace(wr_mas->mas, false); |
| 3614 | reuse_node: | 3608 | reuse_node: |
| 3615 | mas_update_gap(wr_mas->mas); | 3609 | mas_update_gap(wr_mas->mas); |
| @@ -3733,7 +3727,6 @@ static bool mas_is_span_wr(struct ma_wr_state *wr_mas) · 117 unmodified lines | |||
| 3733 | 3727 | ||
| 3734 | static inline void mas_wr_walk_descend(struct ma_wr_state *wr_mas) | 3728 | static inline void mas_wr_walk_descend(struct ma_wr_state *wr_mas) |
| 3735 | { | 3729 | { |
| 3736 | wr_mas->mas->depth++; | ||
| 3737 | wr_mas->type = mte_node_type(wr_mas->mas->node); | 3730 | wr_mas->type = mte_node_type(wr_mas->mas->node); |
| 3738 | mas_wr_node_walk(wr_mas); | 3731 | mas_wr_node_walk(wr_mas); |
| 3739 | wr_mas->slots = ma_slots(wr_mas->node, wr_mas->type); | 3732 | wr_mas->slots = ma_slots(wr_mas->node, wr_mas->type); |
| @@ -3745,6 +3738,7 @@ static inline void mas_wr_walk_traverse(struct ma_wr_state *wr_mas) · 5 unmodified lines | |||
| 3745 | wr_mas->mas->min = wr_mas->r_min; | 3738 | wr_mas->mas->min = wr_mas->r_min; |
| 3746 | wr_mas->mas->node = wr_mas->content; | 3739 | wr_mas->mas->node = wr_mas->content; |
| 3747 | wr_mas->mas->offset = 0; | 3740 | wr_mas->mas->offset = 0; |
| 3741 | wr_mas->mas->depth++; | ||
| 3748 | } | 3742 | } |
| 3749 | /* | 3743 | /* |
| 3750 | * mas_wr_walk() - Walk the tree for a write. | 3744 | * mas_wr_walk() - Walk the tree for a write. |
| @@ -4970,8 +4964,9 @@ static inline bool mas_anode_descend(struct ma_state *mas, unsigned long size) · 1219 unmodified lines | |||
| 4970 | { | 4964 | { |
| 4971 | enum maple_type type = mte_node_type(mas->node); | 4965 | enum maple_type type = mte_node_type(mas->node); |
| 4972 | unsigned long pivot, min, gap = 0; | 4966 | unsigned long pivot, min, gap = 0; |
| 4973 | unsigned char count, offset; | 4967 | unsigned char offset; |
| 4974 | unsigned long *gaps = NULL, *pivots = ma_pivots(mas_mn(mas), type); | 4968 | unsigned long *gaps; |
| 4969 | unsigned long *pivots = ma_pivots(mas_mn(mas), type); | ||
| 4975 | void __rcu **slots = ma_slots(mas_mn(mas), type); | 4970 | void __rcu **slots = ma_slots(mas_mn(mas), type); |
| 4976 | bool found = false; | 4971 | bool found = false; |
| 4977 | 4972 | ||
| @@ -4982,9 +4977,8 @@ static inline bool mas_anode_descend(struct ma_state *mas, unsigned long size) · 4 unmodified lines | |||
| 4982 | 4977 | ||
| 4983 | gaps = ma_gaps(mte_to_node(mas->node), type); | 4978 | gaps = ma_gaps(mte_to_node(mas->node), type); |
| 4984 | offset = mas->offset; | 4979 | offset = mas->offset; |
| 4985 | count = mt_slots[type]; | ||
| 4986 | min = mas_safe_min(mas, pivots, offset); | 4980 | min = mas_safe_min(mas, pivots, offset); |
| 4987 | for (; offset < count; offset++) { | 4981 | for (; offset < mt_slots[type]; offset++) { |
| 4988 | pivot = mas_safe_pivot(mas, pivots, offset, type); | 4982 | pivot = mas_safe_pivot(mas, pivots, offset, type); |
| 4989 | if (offset && !pivot) | 4983 | if (offset && !pivot) |
| 4990 | break; | 4984 | break; |
| @@ -5010,8 +5004,6 @@ static inline bool mas_anode_descend(struct ma_state *mas, unsigned long size) · 19 unmodified lines | |||
| 5010 | mas->min = min; | 5004 | mas->min = min; |
| 5011 | mas->max = pivot; | 5005 | mas->max = pivot; |
| 5012 | offset = 0; | 5006 | offset = 0; |
| 5013 | type = mte_node_type(mas->node); | ||
| 5014 | count = mt_slots[type]; | ||
| 5015 | break; | 5007 | break; |
| 5016 | } | 5008 | } |
| 5017 | } | 5009 | } |
| @@ -5065,6 +5057,7 @@ retry: · 47 unmodified lines | |||
| 5065 | 5057 | ||
| 5066 | return entry; | 5058 | return entry; |
| 5067 | } | 5059 | } |
| 5060 | EXPORT_SYMBOL_GPL(mas_walk); | ||
| 5068 | 5061 | ||
| 5069 | static inline bool mas_rewind_node(struct ma_state *mas) | 5062 | static inline bool mas_rewind_node(struct ma_state *mas) |
| 5070 | { | 5063 | { |
| @@ -5276,6 +5269,7 @@ int mas_empty_area(struct ma_state *mas, unsigned long min, · 205 unmodified lines | |||
| 5276 | mas->last = mas->index + size - 1; | 5269 | mas->last = mas->index + size - 1; |
| 5277 | return 0; | 5270 | return 0; |
| 5278 | } | 5271 | } |
| 5272 | EXPORT_SYMBOL_GPL(mas_empty_area); | ||
| 5279 | 5273 | ||
| 5280 | /* | 5274 | /* |
| 5281 | * mas_empty_area_rev() - Get the highest address within the range that is | 5275 | * mas_empty_area_rev() - Get the highest address within the range that is |
| @@ -5339,6 +5333,7 @@ int mas_empty_area_rev(struct ma_state *mas, unsigned long min, · 57 unmodified lines | |||
| 5339 | mas->index = mas->last - size + 1; | 5333 | mas->index = mas->last - size + 1; |
| 5340 | return 0; | 5334 | return 0; |
| 5341 | } | 5335 | } |
| 5336 | EXPORT_SYMBOL_GPL(mas_empty_area_rev); | ||
| 5342 | 5337 | ||
| 5343 | static inline int mas_alloc(struct ma_state *mas, void *entry, | 5338 | static inline int mas_alloc(struct ma_state *mas, void *entry, |
| 5344 | unsigned long size, unsigned long *index) | 5339 | unsigned long size, unsigned long *index) |
| @@ -5660,6 +5655,7 @@ void *mas_store(struct ma_state *mas, void *entry) · 315 unmodified lines | |||
| 5660 | mas_wr_store_entry(&wr_mas); | 5655 | mas_wr_store_entry(&wr_mas); |
| 5661 | return wr_mas.content; | 5656 | return wr_mas.content; |
| 5662 | } | 5657 | } |
| 5658 | EXPORT_SYMBOL_GPL(mas_store); | ||
| 5663 | 5659 | ||
| 5664 | /** | 5660 | /** |
| 5665 | * mas_store_gfp() - Store a value into the tree. | 5661 | * mas_store_gfp() - Store a value into the tree. |
| @@ -5686,6 +5682,7 @@ retry: · 20 unmodified lines | |||
| 5686 | 5682 | ||
| 5687 | return 0; | 5683 | return 0; |
| 5688 | } | 5684 | } |
| 5685 | EXPORT_SYMBOL_GPL(mas_store_gfp); | ||
| 5689 | 5686 | ||
| 5690 | /** | 5687 | /** |
| 5691 | * mas_store_prealloc() - Store a value into the tree using memory | 5688 | * mas_store_prealloc() - Store a value into the tree using memory |
| @@ -5703,6 +5700,7 @@ void mas_store_prealloc(struct ma_state *mas, void *entry) · 11 unmodified lines | |||
| 5703 | BUG_ON(mas_is_err(mas)); | 5700 | BUG_ON(mas_is_err(mas)); |
| 5704 | mas_destroy(mas); | 5701 | mas_destroy(mas); |
| 5705 | } | 5702 | } |
| 5703 | EXPORT_SYMBOL_GPL(mas_store_prealloc); | ||
| 5706 | 5704 | ||
| 5707 | /** | 5705 | /** |
| 5708 | * mas_preallocate() - Preallocate enough nodes for a store operation | 5706 | * mas_preallocate() - Preallocate enough nodes for a store operation |
| @@ -5772,6 +5770,7 @@ void mas_destroy(struct ma_state *mas) · 63 unmodified lines | |||
| 5772 | } | 5770 | } |
| 5773 | mas->alloc = NULL; | 5771 | mas->alloc = NULL; |
| 5774 | } | 5772 | } |
| 5773 | EXPORT_SYMBOL_GPL(mas_destroy); | ||
| 5775 | 5774 | ||
| 5776 | /* | 5775 | /* |
| 5777 | * mas_expected_entries() - Set the expected number of entries that will be inserted. | 5776 | * mas_expected_entries() - Set the expected number of entries that will be inserted. |
| @@ -5833,6 +5832,7 @@ int mas_expected_entries(struct ma_state *mas, unsigned long nr_entries) · 55 unmodified lines | |||
| 5833 | return ret; | 5832 | return ret; |
| 5834 | 5833 | ||
| 5835 | } | 5834 | } |
| 5835 | EXPORT_SYMBOL_GPL(mas_expected_entries); | ||
| 5836 | 5836 | ||
| 5837 | /** | 5837 | /** |
| 5838 | * mas_next() - Get the next entry. | 5838 | * mas_next() - Get the next entry. |
| @@ -6013,6 +6013,7 @@ void *mas_find(struct ma_state *mas, unsigned long max) · 174 unmodified lines | |||
| 6013 | /* Retries on dead nodes handled by mas_next_entry */ | 6013 | /* Retries on dead nodes handled by mas_next_entry */ |
| 6014 | return mas_next_entry(mas, max); | 6014 | return mas_next_entry(mas, max); |
| 6015 | } | 6015 | } |
| 6016 | EXPORT_SYMBOL_GPL(mas_find); | ||
| 6016 | 6017 | ||
| 6017 | /** | 6018 | /** |
| 6018 | * mas_find_rev: On the first call, find the first non-null entry at or below | 6019 | * mas_find_rev: On the first call, find the first non-null entry at or below |
| @@ -6059,7 +6060,7 @@ void *mas_find_rev(struct ma_state *mas, unsigned long min) · 40 unmodified lines | |||
| 6059 | /* Retries on dead nodes handled by mas_next_entry */ | 6060 | /* Retries on dead nodes handled by mas_next_entry */ |
| 6060 | return mas_prev_entry(mas, min); | 6061 | return mas_prev_entry(mas, min); |
| 6061 | } | 6062 | } |
| 6062 | EXPORT_SYMBOL_GPL(mas_find); | 6063 | EXPORT_SYMBOL_GPL(mas_find_rev); |
| 6063 | 6064 | ||
| 6064 | /** | 6065 | /** |
| 6065 | * mas_erase() - Find the range in which index resides and erase the entire | 6066 | * mas_erase() - Find the range in which index resides and erase the entire |
| @@ -6541,8 +6542,27 @@ static inline int mas_dead_node(struct ma_state *mas, unsigned long index) · 475 unmodified lines | |||
| 6541 | mas_rewalk(mas, index); | 6542 | mas_rewalk(mas, index); |
| 6542 | return 1; | 6543 | return 1; |
| 6543 | } | 6544 | } |
| 6544 | #endif /* not defined __KERNEL__ */ | ||
| 6545 | 6545 | ||
| 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__ */ | ||
| 6546 | /* | 6566 | /* |
| 6547 | * mas_get_slot() - Get the entry in the maple state node stored at @offset. | 6567 | * mas_get_slot() - Get the entry in the maple state node stored at @offset. |
| 6548 | * @mas: The maple state | 6568 | * @mas: The maple state |
| @@ -6816,6 +6836,7 @@ void mt_dump(const struct maple_tree *mt) · 267 unmodified lines | |||
| 6816 | else if (entry) | 6836 | else if (entry) |
| 6817 | mt_dump_node(mt, entry, 0, mt_max[mte_node_type(entry)], 0); | 6837 | mt_dump_node(mt, entry, 0, mt_max[mte_node_type(entry)], 0); |
| 6818 | } | 6838 | } |
| 6839 | EXPORT_SYMBOL_GPL(mt_dump); | ||
| 6819 | 6840 | ||
| 6820 | /* | 6841 | /* |
| 6821 | * Calculate the maximum gap in a node and check if that's what is reported in | 6842 | * Calculate the maximum gap in a node and check if that's what is reported in |
| @@ -7126,5 +7147,6 @@ done: · 304 unmodified lines | |||
| 7126 | rcu_read_unlock(); | 7147 | rcu_read_unlock(); |
| 7127 | 7148 | ||
| 7128 | } | 7149 | } |
| 7150 | EXPORT_SYMBOL_GPL(mt_validate); | ||
| 7129 | 7151 | ||
| 7130 | #endif /* CONFIG_DEBUG_MAPLE_TREE */ | 7152 | #endif /* CONFIG_DEBUG_MAPLE_TREE */ |
| @@ -1,24 +1,35 @@ | |||
| 1 | // SPDX-License-Identifier: GPL-2.0+ | 1 | // SPDX-License-Identifier: GPL-2.0+ |
| 2 | /* | 2 | /* |
| 3 | * test_maple_tree.c: Test the maple tree API | 3 | * test_maple_tree.c: Test the maple tree API |
| 4 | * Copyright (c) 2018 Liam R. Howlett | 4 | * Copyright (c) 2018-2022 Oracle Corporation |
| 5 | * Author: Liam R. Howlett <Liam.Howlett@Oracle.com> | 5 | * Author: Liam R. Howlett <Liam.Howlett@Oracle.com> |
| 6 | * | ||
| 7 | * Any tests that only require the interface of the tree. | ||
| 6 | */ | 8 | */ |
| 7 | 9 | ||
| 8 | #include <linux/maple_tree.h> | 10 | #include <linux/maple_tree.h> |
| 9 | #include <linux/module.h> | 11 | #include <linux/module.h> |
| 10 | #include <stdlib.h> | ||
| 11 | #include <time.h> | ||
| 12 | 12 | ||
| 13 | #define MTREE_ALLOC_MAX 0x2000000000000Ul | 13 | #define MTREE_ALLOC_MAX 0x2000000000000Ul |
| 14 | #ifndef CONFIG_DEBUG_MAPLE_TREE | ||
| 14 | #define CONFIG_DEBUG_MAPLE_TREE | 15 | #define CONFIG_DEBUG_MAPLE_TREE |
| 16 | #endif | ||
| 15 | #define CONFIG_MAPLE_SEARCH | 17 | #define CONFIG_MAPLE_SEARCH |
| 18 | #define MAPLE_32BIT (MAPLE_NODE_SLOTS > 31) | ||
| 19 | |||
| 16 | /* #define BENCH_SLOT_STORE */ | 20 | /* #define BENCH_SLOT_STORE */ |
| 17 | /* #define BENCH_NODE_STORE */ | 21 | /* #define BENCH_NODE_STORE */ |
| 18 | /* #define BENCH_AWALK */ | 22 | /* #define BENCH_AWALK */ |
| 19 | /* #define BENCH_WALK */ | 23 | /* #define BENCH_WALK */ |
| 20 | /* #define BENCH_MT_FOR_EACH */ | 24 | /* #define BENCH_MT_FOR_EACH */ |
| 21 | /* #define BENCH_FORK */ | 25 | /* #define BENCH_FORK */ |
| 26 | |||
| 27 | #ifdef __KERNEL__ | ||
| 28 | #define mt_set_non_kernel(x) do {} while (0) | ||
| 29 | #define mt_zero_nr_tallocated(x) do {} while (0) | ||
| 30 | #else | ||
| 31 | #define cond_resched() do {} while (0) | ||
| 32 | #endif | ||
| 22 | static | 33 | static |
| 23 | int mtree_insert_index(struct maple_tree *mt, unsigned long index, gfp_t gfp) | 34 | int mtree_insert_index(struct maple_tree *mt, unsigned long index, gfp_t gfp) |
| 24 | { | 35 | { |
| @@ -65,6 +76,7 @@ static void *mtree_test_erase(struct maple_tree *mt, unsigned long index) · 40 unmodified lines | |||
| 65 | return mtree_erase(mt, index); | 76 | return mtree_erase(mt, index); |
| 66 | } | 77 | } |
| 67 | 78 | ||
| 79 | #if defined(CONFIG_64BIT) | ||
| 68 | static noinline void check_mtree_alloc_range(struct maple_tree *mt, | 80 | static noinline void check_mtree_alloc_range(struct maple_tree *mt, |
| 69 | unsigned long start, unsigned long end, unsigned long size, | 81 | unsigned long start, unsigned long end, unsigned long size, |
| 70 | unsigned long expected, int eret, void *ptr) | 82 | unsigned long expected, int eret, void *ptr) |
| @@ -98,6 +110,7 @@ static noinline void check_mtree_alloc_rrange(struct maple_tree *mt, · 27 unmodified lines | |||
| 98 | 110 | ||
| 99 | MT_BUG_ON(mt, result != expected); | 111 | MT_BUG_ON(mt, result != expected); |
| 100 | } | 112 | } |
| 113 | #endif | ||
| 101 | 114 | ||
| 102 | static noinline void check_load(struct maple_tree *mt, unsigned long index, | 115 | static noinline void check_load(struct maple_tree *mt, unsigned long index, |
| 103 | void *ptr) | 116 | void *ptr) |
| @@ -150,12 +163,6 @@ static noinline void check_insert(struct maple_tree *mt, unsigned long index, · 46 unmodified lines | |||
| 150 | MT_BUG_ON(mt, ret != 0); | 163 | MT_BUG_ON(mt, ret != 0); |
| 151 | } | 164 | } |
| 152 | 165 | ||
| 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 | |||
| 159 | static noinline void check_dup_insert(struct maple_tree *mt, | 166 | static noinline void check_dup_insert(struct maple_tree *mt, |
| 160 | unsigned long index, void *ptr) | 167 | unsigned long index, void *ptr) |
| 161 | { | 168 | { |
| @@ -172,41 +179,6 @@ void check_index_load(struct maple_tree *mt, unsigned long index) · 10 unmodified lines | |||
| 172 | return check_load(mt, index, xa_mk_value(index & LONG_MAX)); | 179 | return check_load(mt, index, xa_mk_value(index & LONG_MAX)); |
| 173 | } | 180 | } |
| 174 | 181 | ||
| 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 | |||
| 210 | static inline int not_empty(struct maple_node *node) | 182 | static inline int not_empty(struct maple_node *node) |
| 211 | { | 183 | { |
| 212 | int i; | 184 | int i; |
| @@ -221,350 +193,6 @@ static inline int not_empty(struct maple_node *node) · 8 unmodified lines | |||
| 221 | return 0; | 193 | return 0; |
| 222 | } | 194 | } |
| 223 | 195 | ||
| 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 | } | ||
| 568 | 196 | ||
| 569 | static noinline void check_rev_seq(struct maple_tree *mt, unsigned long max, | 197 | static noinline void check_rev_seq(struct maple_tree *mt, unsigned long max, |
| 570 | bool verbose) | 198 | bool verbose) |
| @@ -588,6 +216,7 @@ static noinline void check_rev_seq(struct maple_tree *mt, unsigned long max, · 17 unmodified lines | |||
| 588 | } | 216 | } |
| 589 | check_load(mt, max + 1, NULL); | 217 | check_load(mt, max + 1, NULL); |
| 590 | 218 | ||
| 219 | #ifndef __KERNEL__ | ||
| 591 | if (verbose) { | 220 | if (verbose) { |
| 592 | rcu_barrier(); | 221 | rcu_barrier(); |
| 593 | mt_dump(mt); | 222 | mt_dump(mt); |
| @@ -595,6 +224,7 @@ static noinline void check_rev_seq(struct maple_tree *mt, unsigned long max, · 1 unmodified line | |||
| 595 | __func__, max, mt_get_alloc_size()/1024, mt_nr_allocated(), | 224 | __func__, max, mt_get_alloc_size()/1024, mt_nr_allocated(), |
| 596 | mt_nr_tallocated()); | 225 | mt_nr_tallocated()); |
| 597 | } | 226 | } |
| 227 | #endif | ||
| 598 | } | 228 | } |
| 599 | 229 | ||
| 600 | static noinline void check_seq(struct maple_tree *mt, unsigned long max, | 230 | 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 | |||
| 614 | MT_BUG_ON(mt, !mt_height(mt)); | 244 | MT_BUG_ON(mt, !mt_height(mt)); |
| 615 | check_load(mt, i + 1, NULL); | 245 | check_load(mt, i + 1, NULL); |
| 616 | } | 246 | } |
| 247 | |||
| 248 | #ifndef __KERNEL__ | ||
| 617 | if (verbose) { | 249 | if (verbose) { |
| 618 | rcu_barrier(); | 250 | rcu_barrier(); |
| 619 | mt_dump(mt); | 251 | mt_dump(mt); |
| @@ -621,6 +253,7 @@ static noinline void check_seq(struct maple_tree *mt, unsigned long max, · 1 unmodified line | |||
| 621 | max, mt_get_alloc_size()/1024, mt_nr_allocated(), | 253 | max, mt_get_alloc_size()/1024, mt_nr_allocated(), |
| 622 | mt_nr_tallocated()); | 254 | mt_nr_tallocated()); |
| 623 | } | 255 | } |
| 256 | #endif | ||
| 624 | } | 257 | } |
| 625 | 258 | ||
| 626 | static noinline void check_lb_not_empty(struct maple_tree *mt) | 259 | 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 | |||
| 651 | static noinline void check_upper_bound_split(struct maple_tree *mt) | 284 | static noinline void check_upper_bound_split(struct maple_tree *mt) |
| 652 | { | 285 | { |
| 653 | unsigned long i, j; | 286 | unsigned long i, j; |
| 654 | unsigned long huge = 4000UL * 1000 * 1000; | 287 | unsigned long huge; |
| 655 | 288 | ||
| 656 | MT_BUG_ON(mt, !mtree_empty(mt)); | 289 | MT_BUG_ON(mt, !mtree_empty(mt)); |
| 657 | 290 | ||
| 291 | if (MAPLE_32BIT) | ||
| 292 | huge = 2147483647UL; | ||
| 293 | else | ||
| 294 | huge = 4000UL * 1000 * 1000; | ||
| 295 | |||
| 658 | i = 4096; | 296 | i = 4096; |
| 659 | while (i < huge) { | 297 | while (i < huge) { |
| 660 | check_insert(mt, i, (void *) i); | 298 | check_insert(mt, i, (void *) i); |
| @@ -687,6 +325,7 @@ static noinline void check_rev_find(struct maple_tree *mt) · 26 unmodified lines | |||
| 687 | mtree_store_range(mt, i*10, i*10 + 5, | 325 | mtree_store_range(mt, i*10, i*10 + 5, |
| 688 | xa_mk_value(i), GFP_KERNEL); | 326 | xa_mk_value(i), GFP_KERNEL); |
| 689 | 327 | ||
| 328 | rcu_read_lock(); | ||
| 690 | mas_set(&mas, 1000); | 329 | mas_set(&mas, 1000); |
| 691 | val = mas_find_rev(&mas, 1000); | 330 | val = mas_find_rev(&mas, 1000); |
| 692 | MT_BUG_ON(mt, val != xa_mk_value(100)); | 331 | MT_BUG_ON(mt, val != xa_mk_value(100)); |
| @@ -712,13 +351,15 @@ static noinline void check_rev_find(struct maple_tree *mt) · 19 unmodified lines | |||
| 712 | MT_BUG_ON(mt, val != xa_mk_value(0)); | 351 | MT_BUG_ON(mt, val != xa_mk_value(0)); |
| 713 | val = mas_find_rev(&mas, 0); | 352 | val = mas_find_rev(&mas, 0); |
| 714 | MT_BUG_ON(mt, val != NULL); | 353 | MT_BUG_ON(mt, val != NULL); |
| 354 | rcu_read_unlock(); | ||
| 715 | } | 355 | } |
| 716 | 356 | ||
| 717 | static noinline void check_find(struct maple_tree *mt) | 357 | static noinline void check_find(struct maple_tree *mt) |
| 718 | { | 358 | { |
| 719 | unsigned long val = 0; | 359 | unsigned long val = 0; |
| 720 | unsigned long count = 20; | 360 | unsigned long count; |
| 721 | unsigned long max; | 361 | unsigned long max; |
| 362 | unsigned long top; | ||
| 722 | unsigned long last = 0, index = 0; | 363 | unsigned long last = 0, index = 0; |
| 723 | void *entry, *entry2; | 364 | void *entry, *entry2; |
| 724 | 365 | ||
| @@ -727,6 +368,18 @@ static noinline void check_find(struct maple_tree *mt) · 2 unmodified lines | |||
| 727 | /* Insert 0. */ | 368 | /* Insert 0. */ |
| 728 | MT_BUG_ON(mt, mtree_insert_index(mt, val++, GFP_KERNEL)); | 369 | MT_BUG_ON(mt, mtree_insert_index(mt, val++, GFP_KERNEL)); |
| 729 | 370 | ||
| 371 | #if defined(CONFIG_64BIT) | ||
| 372 | top = 4398046511104UL; | ||
| 373 | #else | ||
| 374 | top = ULONG_MAX; | ||
| 375 | #endif | ||
| 376 | |||
| 377 | if (MAPLE_32BIT) { | ||
| 378 | count = 15; | ||
| 379 | } else { | ||
| 380 | count = 20; | ||
| 381 | } | ||
| 382 | |||
| 730 | for (int i = 0; i <= count; i++) { | 383 | for (int i = 0; i <= count; i++) { |
| 731 | if (val != 64) | 384 | if (val != 64) |
| 732 | MT_BUG_ON(mt, mtree_insert_index(mt, val, GFP_KERNEL)); | 385 | MT_BUG_ON(mt, mtree_insert_index(mt, val, GFP_KERNEL)); |
| @@ -805,12 +458,17 @@ static noinline void check_find(struct maple_tree *mt) · 72 unmodified lines | |||
| 805 | index = 0; | 458 | index = 0; |
| 806 | MT_BUG_ON(mt, mtree_insert_index(mt, ULONG_MAX, GFP_KERNEL)); | 459 | MT_BUG_ON(mt, mtree_insert_index(mt, ULONG_MAX, GFP_KERNEL)); |
| 807 | mt_for_each(mt, entry, index, ULONG_MAX) { | 460 | mt_for_each(mt, entry, index, ULONG_MAX) { |
| 808 | if (val == 4398046511104) | 461 | if (val == top) |
| 809 | MT_BUG_ON(mt, entry != | 462 | MT_BUG_ON(mt, entry != xa_mk_value(LONG_MAX)); |
| 810 | xa_mk_value(ULONG_MAX & LONG_MAX)); | ||
| 811 | else | 463 | else |
| 812 | MT_BUG_ON(mt, xa_mk_value(val) != entry); | 464 | MT_BUG_ON(mt, xa_mk_value(val) != entry); |
| 813 | val <<= 2; | 465 | |
| 466 | /* Workaround for 32bit */ | ||
| 467 | if ((val << 2) < val) | ||
| 468 | val = ULONG_MAX; | ||
| 469 | else | ||
| 470 | val <<= 2; | ||
| 471 | |||
| 814 | if (val == 64) /* Skip zero entry. */ | 472 | if (val == 64) /* Skip zero entry. */ |
| 815 | val <<= 2; | 473 | val <<= 2; |
| 816 | /* For zero check. */ | 474 | /* For zero check. */ |
| @@ -842,11 +500,16 @@ static noinline void check_find(struct maple_tree *mt) · 25 unmodified lines | |||
| 842 | mas_for_each(&mas, entry, ULONG_MAX) { | 500 | mas_for_each(&mas, entry, ULONG_MAX) { |
| 843 | if (val == 64) | 501 | if (val == 64) |
| 844 | MT_BUG_ON(mt, entry != XA_ZERO_ENTRY); | 502 | MT_BUG_ON(mt, entry != XA_ZERO_ENTRY); |
| 845 | else if (val == 4398046511104) | 503 | else if (val == top) |
| 846 | MT_BUG_ON(mt, entry != xa_mk_value(ULONG_MAX & LONG_MAX)); | 504 | MT_BUG_ON(mt, entry != xa_mk_value(LONG_MAX)); |
| 847 | else | 505 | else |
| 848 | MT_BUG_ON(mt, xa_mk_value(val) != entry); | 506 | MT_BUG_ON(mt, xa_mk_value(val) != entry); |
| 849 | val <<= 2; | 507 | |
| 508 | /* Workaround for 32bit */ | ||
| 509 | if ((val << 2) < val) | ||
| 510 | val = ULONG_MAX; | ||
| 511 | else | ||
| 512 | val <<= 2; | ||
| 850 | 513 | ||
| 851 | /* For zero check. */ | 514 | /* For zero check. */ |
| 852 | if (!val) | 515 | if (!val) |
| @@ -951,36548 +614,1350 @@ static noinline void check_find_2(struct maple_tree *mt) · 98 unmodified lines | |||
| 951 | /*MT_BUG_ON(mt, !mtree_empty(mt)); */ | 614 | /*MT_BUG_ON(mt, !mtree_empty(mt)); */ |
| 952 | } | 615 | } |
| 953 | 616 | ||
| 954 | #define erase_ptr(i) entry[i%2] | ||
| 955 | #define erase_check_load(mt, i) check_load(mt, set[i], entry[i%2]) | ||
| 956 | #define erase_check_insert(mt, i) check_insert(mt, set[i], entry[i%2]) | ||
| 957 | #define erase_check_erase(mt, i) check_erase(mt, set[i], entry[i%2]) | ||
| 958 | 617 | ||
| 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) | ||
| 960 | { | 620 | { |
| 961 | unsigned long set[] = { 5015, 5014, 5017, 25, 1000, | ||
| 962 | 1001, 1002, 1003, 1005, 0, | ||
| 963 | 6003, 6002, 6008, 6012, 6015, | ||
| 964 | 7003, 7002, 7008, 7012, 7015, | ||
| 965 | 8003, 8002, 8008, 8012, 8015, | ||
| 966 | 9003, 9002, 9008, 9012, 9015, | ||
| 967 | 10003, 10002, 10008, 10012, 10015, | ||
| 968 | 11003, 11002, 11008, 11012, 11015, | ||
| 969 | 12003, 12002, 12008, 12012, 12015, | ||
| 970 | 13003, 13002, 13008, 13012, 13015, | ||
| 971 | 14003, 14002, 14008, 14012, 14015, | ||
| 972 | 15003, 15002, 15008, 15012, 15015, | ||
| 973 | }; | ||
| 974 | |||
| 975 | |||
| 976 | void *ptr = &set; | ||
| 977 | void *entry[2] = { ptr, mt }; | ||
| 978 | void *root_node; | ||
| 979 | |||
| 980 | |||
| 981 | rcu_register_thread(); | ||
| 982 | mt_set_in_rcu(mt); | ||
| 983 | for (int i = 0; i < 4; i++) | ||
| 984 | erase_check_insert(mt, i); | ||
| 985 | for (int i = 0; i < 4; i++) | ||
| 986 | erase_check_load(mt, i); | ||
| 987 | |||
| 988 | mt_set_non_kernel(2); | ||
| 989 | erase_check_erase(mt, 1); | ||
| 990 | erase_check_load(mt, 0); | ||
| 991 | check_load(mt, set[1], NULL); | ||
| 992 | for (int i = 2; i < 4; i++) | ||
| 993 | erase_check_load(mt, i); | ||
| 994 | |||
| 995 | |||
| 996 | erase_check_erase(mt, 2); | ||
| 997 | erase_check_load(mt, 0); | ||
| 998 | check_load(mt, set[1], NULL); | ||
| 999 | check_load(mt, set[2], NULL); | ||
| 1000 | |||
| 1001 | erase_check_insert(mt, 1); | ||
| 1002 | erase_check_insert(mt, 2); | ||
| 1003 | |||
| 1004 | for (int i = 0; i < 4; i++) | ||
| 1005 | erase_check_load(mt, i); | ||
| 1006 | |||
| 1007 | /* Check erase and load without an allocation. */ | ||
| 1008 | erase_check_load(mt, 3); | ||
| 1009 | erase_check_erase(mt, 1); | ||
| 1010 | erase_check_load(mt, 0); | ||
| 1011 | check_load(mt, set[1], NULL); | ||
| 1012 | for (int i = 2; i < 4; i++) | ||
| 1013 | erase_check_load(mt, i); | ||
| 1014 | |||
| 1015 | /* | 621 | /* |
| 1016 | * Set the newly erased node. This will produce a different allocated | 622 | * Generated by: |
| 1017 | * node to avoid busy slots. | 623 | * cat /proc/self/maps | awk '{print $1}'| |
| 624 | * awk -F "-" '{printf "0x%s, 0x%s, ", $1, $2}' | ||
| 1018 | */ | 625 | */ |
| 1019 | root_node = mt->ma_root; | ||
| 1020 | erase_check_insert(mt, 1); | ||
| 1021 | |||
| 1022 | erase_check_load(mt, 0); | ||
| 1023 | check_load(mt, 5016, NULL); | ||
| 1024 | erase_check_load(mt, 1); | ||
| 1025 | check_load(mt, 5013, NULL); | ||
| 1026 | erase_check_load(mt, 2); | ||
| 1027 | check_load(mt, 5018, NULL); | ||
| 1028 | erase_check_load(mt, 3); | ||
| 1029 | |||
| 1030 | erase_check_erase(mt, 2); /* erase 5017 to check append */ | ||
| 1031 | erase_check_load(mt, 0); | ||
| 1032 | check_load(mt, 5016, NULL); | ||
| 1033 | erase_check_load(mt, 1); | ||
| 1034 | check_load(mt, 5013, NULL); | ||
| 1035 | check_load(mt, set[2], NULL); | ||
| 1036 | check_load(mt, 5018, NULL); | ||
| 1037 | |||
| 1038 | erase_check_load(mt, 3); | ||
| 1039 | |||
| 1040 | root_node = mt->ma_root; | ||
| 1041 | erase_check_insert(mt, 2); | ||
| 1042 | |||
| 1043 | erase_check_load(mt, 0); | ||
| 1044 | check_load(mt, 5016, NULL); | ||
| 1045 | erase_check_load(mt, 1); | ||
| 1046 | check_load(mt, 5013, NULL); | ||
| 1047 | erase_check_load(mt, 2); | ||
| 1048 | check_load(mt, 5018, NULL); | ||
| 1049 | erase_check_load(mt, 3); | ||
| 1050 | 626 | ||
| 1051 | mt_set_non_kernel(1); | 627 | unsigned long range[] = { |
| 1052 | erase_check_erase(mt, 2); /* erase 5017 to check append */ | 628 | /* Inclusive , Exclusive. */ |
| 1053 | erase_check_load(mt, 0); | 629 | 0x565234af2000, 0x565234af4000, |
| 1054 | check_load(mt, 5016, NULL); | 630 | 0x565234af4000, 0x565234af9000, |
| 1055 | check_load(mt, set[2], NULL); | 631 | 0x565234af9000, 0x565234afb000, |
| 1056 | erase_check_erase(mt, 0); /* erase 5015 to check append */ | 632 | 0x565234afc000, 0x565234afd000, |
| 1057 | check_load(mt, set[0], NULL); | 633 | 0x565234afd000, 0x565234afe000, |
| 1058 | check_load(mt, 5016, NULL); | 634 | 0x565235def000, 0x565235e10000, |
| 1059 | erase_check_insert(mt, 4); /* 1000 < Should not split. */ | 635 | 0x7f36d4bfd000, 0x7f36d4ee2000, |
| 1060 | check_load(mt, set[0], NULL); | 636 | 0x7f36d4ee2000, 0x7f36d4f04000, |
| 1061 | check_load(mt, 5016, NULL); | 637 | 0x7f36d4f04000, 0x7f36d504c000, |
| 1062 | erase_check_load(mt, 1); | 638 | 0x7f36d504c000, 0x7f36d5098000, |
| 1063 | check_load(mt, 5013, NULL); | 639 | 0x7f36d5098000, 0x7f36d5099000, |
| 1064 | check_load(mt, set[2], NULL); | 640 | 0x7f36d5099000, 0x7f36d509d000, |
| 1065 | check_load(mt, 5018, NULL); | 641 | 0x7f36d509d000, 0x7f36d509f000, |
| 1066 | erase_check_load(mt, 4); | 642 | 0x7f36d509f000, 0x7f36d50a5000, |
| 1067 | check_load(mt, 999, NULL); | 643 | 0x7f36d50b9000, 0x7f36d50db000, |
| 1068 | check_load(mt, 1001, NULL); | 644 | 0x7f36d50db000, 0x7f36d50dc000, |
| 1069 | erase_check_load(mt, 4); | 645 | 0x7f36d50dc000, 0x7f36d50fa000, |
| 1070 | if (mt_in_rcu(mt)) | 646 | 0x7f36d50fa000, 0x7f36d5102000, |
| 1071 | MT_BUG_ON(mt, root_node == mt->ma_root); | 647 | 0x7f36d5102000, 0x7f36d5103000, |
| 1072 | else | 648 | 0x7f36d5103000, 0x7f36d5104000, |
| 1073 | MT_BUG_ON(mt, root_node != mt->ma_root); | 649 | 0x7f36d5104000, 0x7f36d5105000, |
| 650 | 0x7fff5876b000, 0x7fff5878d000, | ||
| 651 | 0x7fff5878e000, 0x7fff58791000, | ||
| 652 | 0x7fff58791000, 0x7fff58793000, | ||
| 653 | }; | ||
| 1074 | 654 | ||
| 1075 | /* Should not have split. */ | 655 | unsigned long holes[] = { |
| 1076 | MT_BUG_ON(mt, !mte_is_leaf(mt->ma_root)); | 656 | /* |
| 657 | * Note: start of hole is INCLUSIVE | ||
| 658 | * end of hole is EXCLUSIVE | ||
| 659 | * (opposite of the above table.) | ||
| 660 | * Start of hole, end of hole, size of hole (+1) | ||
| 661 | */ | ||
| 662 | 0x565234afb000, 0x565234afc000, 0x1000, | ||
| 663 | 0x565234afe000, 0x565235def000, 0x12F1000, | ||
| 664 | 0x565235e10000, 0x7f36d4bfd000, 0x28E49EDED000, | ||
| 665 | }; | ||
| 1077 | 666 | ||
| 667 | /* | ||
| 668 | * req_range consists of 4 values. | ||
| 669 | * 1. min index | ||
| 670 | * 2. max index | ||
| 671 | * 3. size | ||
| 672 | * 4. number that should be returned. | ||
| 673 | * 5. return value | ||
| 674 | */ | ||
| 675 | unsigned long req_range[] = { | ||
| 676 | 0x565234af9000, /* Min */ | ||
| 677 | 0x7fff58791000, /* Max */ | ||
| 678 | 0x1000, /* Size */ | ||
| 679 | 0x7fff5878d << 12, /* First rev hole of size 0x1000 */ | ||
| 680 | 0, /* Return value success. */ | ||
| 1078 | 681 | ||
| 1079 | /* Coalesce testing */ | 682 | 0x0, /* Min */ |
| 1080 | erase_check_insert(mt, 0); | 683 | 0x565234AF1 << 12, /* Max */ |
| 1081 | erase_check_insert(mt, 2); | 684 | 0x3000, /* Size */ |
| 685 | 0x565234AEE << 12, /* max - 3. */ | ||
| 686 | 0, /* Return value success. */ | ||
| 1082 | 687 | ||
| 1083 | for (int i = 5; i < 25; i++) { | 688 | 0x0, /* Min */ |
| 1084 | erase_check_insert(mt, i); | 689 | -1, /* Max */ |
| 1085 | for (int j = i; j >= 0; j--) | 690 | 0x1000, /* Size */ |
| 1086 | erase_check_load(mt, j); | 691 | 562949953421311 << 12,/* First rev hole of size 0x1000 */ |
| 1087 | } | 692 | 0, /* Return value success. */ |
| 1088 | 693 | ||
| 1089 | erase_check_erase(mt, 14); /*6015 */ | 694 | 0x0, /* Min */ |
| 1090 | for (int i = 0; i < 25; i++) { | 695 | 0x7F36D510A << 12, /* Max */ |
| 1091 | if (i == 14) | 696 | 0x4000, /* Size */ |
| 1092 | check_load(mt, set[i], NULL); | 697 | 0x7F36D5106 << 12, /* First rev hole of size 0x4000 */ |
| 1093 | else | 698 | 0, /* Return value success. */ |
| 1094 | erase_check_load(mt, i); | ||
| 1095 | } | ||
| 1096 | erase_check_erase(mt, 16); /*7002 */ | ||
| 1097 | for (int i = 0; i < 25; i++) { | ||
| 1098 | if (i == 16 || i == 14) | ||
| 1099 | check_load(mt, set[i], NULL); | ||
| 1100 | else | ||
| 1101 | erase_check_load(mt, i); | ||
| 1102 | } | ||
| 1103 | 699 | ||
| 700 | /* Ascend test. */ | ||
| 701 | 0x0, | ||
| 702 | 34148798629 << 12, | ||
| 703 | 19 << 12, | ||
| 704 | 34148797418 << 12, | ||
| 705 | 0x0, | ||
| 1104 | 706 | ||
| 1105 | mt_set_non_kernel(1); | 707 | /* Too big test. */ |
| 1106 | erase_check_erase(mt, 13); /*6012 */ | 708 | 0x0, |
| 1107 | for (int i = 0; i < 25; i++) { | 709 | 18446744073709551615UL, |
| 1108 | if (i == 16 || i == 14 || i == 13) | 710 | 562915594369134UL << 12, |
| 1109 | check_load(mt, set[i], NULL); | 711 | 0x0, |
| 1110 | else | 712 | -EBUSY, |
| 1111 | erase_check_load(mt, i); | ||
| 1112 | } | ||
| 1113 | 713 | ||
| 1114 | erase_check_erase(mt, 15); /*7003 */ | 714 | }; |
| 1115 | for (int i = 0; i < 25; i++) { | ||
| 1116 | if (i <= 16 && i >= 13) | ||
| 1117 | check_load(mt, set[i], NULL); | ||
| 1118 | else | ||
| 1119 | erase_check_load(mt, i); | ||
| 1120 | } | ||
| 1121 | 715 | ||
| 1122 | mt_set_non_kernel(2); | 716 | int i, range_count = ARRAY_SIZE(range); |
| 1123 | erase_check_erase(mt, 17); /*7008 *should* cause coalesce. */ | 717 | int req_range_count = ARRAY_SIZE(req_range); |
| 1124 | for (int i = 0; i < 25; i++) { | 718 | unsigned long min = 0; |
| 1125 | if (i <= 17 && i >= 13) | ||
| 1126 | check_load(mt, set[i], NULL); | ||
| 1127 | else | ||
| 1128 | erase_check_load(mt, i); | ||
| 1129 | } | ||
| 1130 | 719 | ||
| 1131 | erase_check_erase(mt, 18); /*7012 */ | 720 | MA_STATE(mas, mt, 0, 0); |
| 1132 | for (int i = 0; i < 25; i++) { | ||
| 1133 | if (i <= 18 && i >= 13) | ||
| 1134 | check_load(mt, set[i], NULL); | ||
| 1135 | else | ||
| 1136 | erase_check_load(mt, i); | ||
| 1137 | } | ||
| 1138 | 721 | ||
| 1139 | mt_set_non_kernel(2); | 722 | mtree_store_range(mt, MTREE_ALLOC_MAX, ULONG_MAX, XA_ZERO_ENTRY, |
| 1140 | erase_check_erase(mt, 19); /*7015 */ | 723 | GFP_KERNEL); |
| 1141 | for (int i = 0; i < 25; i++) { | 724 | #define DEBUG_REV_RANGE 0 |
| 1142 | if (i <= 19 && i >= 13) | 725 | for (i = 0; i < range_count; i += 2) { |
| 1143 | check_load(mt, set[i], NULL); | 726 | /* Inclusive, Inclusive (with the -1) */ |
| 1144 | else | ||
| 1145 | erase_check_load(mt, i); | ||
| 1146 | } | ||
| 1147 | 727 | ||
| 1148 | erase_check_erase(mt, 20); /*8003 */ | 728 | #if DEBUG_REV_RANGE |
| 1149 | for (int i = 0; i < 25; i++) { | 729 | pr_debug("\t%s: Insert %lu-%lu\n", __func__, range[i] >> 12, |
| 1150 | if (i <= 20 && i >= 13) | 730 | (range[i + 1] >> 12) - 1); |
| 1151 | check_load(mt, set[i], NULL); | 731 | #endif |
| 1152 | else | 732 | check_insert_range(mt, range[i] >> 12, (range[i + 1] >> 12) - 1, |
| 1153 | erase_check_load(mt, i); | 733 | xa_mk_value(range[i] >> 12), 0); |
| 734 | mt_validate(mt); | ||
| 1154 | } | 735 | } |
| 1155 | 736 | ||
| 1156 | erase_check_erase(mt, 21); /*8002 */ | ||
| 1157 | for (int i = 0; i < 25; i++) { | ||
| 1158 | if (i <= 21 && i >= 13) | ||
| 1159 | check_load(mt, set[i], NULL); | ||
| 1160 | else | ||
| 1161 | erase_check_load(mt, i); | ||
| 1162 | } | ||
| 1163 | 737 | ||
| 1164 | mt_set_non_kernel(2); | 738 | mas_lock(&mas); |
| 1165 | erase_check_erase(mt, 22); /*8008 */ | 739 | for (i = 0; i < ARRAY_SIZE(holes); i += 3) { |
| 1166 | for (int i = 0; i < 25; i++) { | 740 | #if DEBUG_REV_RANGE |
| 1167 | if (i <= 22 && i >= 13) | 741 | pr_debug("Search from %lu-%lu for gap %lu should be at %lu\n", |
| 1168 | check_load(mt, set[i], NULL); | 742 | min, holes[i+1]>>12, holes[i+2]>>12, |
| 1169 | else | 743 | holes[i] >> 12); |
| 1170 | erase_check_load(mt, i); | 744 | #endif |
| 745 | MT_BUG_ON(mt, mas_empty_area_rev(&mas, min, | ||
| 746 | holes[i+1] >> 12, | ||
| 747 | holes[i+2] >> 12)); | ||
| 748 | #if DEBUG_REV_RANGE | ||
| 749 | pr_debug("Found %lu %lu\n", mas.index, mas.last); | ||
| 750 | pr_debug("gap %lu %lu\n", (holes[i] >> 12), | ||
| 751 | (holes[i+1] >> 12)); | ||
| 752 | #endif | ||
| 753 | MT_BUG_ON(mt, mas.last + 1 != (holes[i+1] >> 12)); | ||
| 754 | MT_BUG_ON(mt, mas.index != (holes[i+1] >> 12) - (holes[i+2] >> 12)); | ||
| 755 | min = holes[i+1] >> 12; | ||
| 756 | mas_reset(&mas); | ||
| 1171 | } | 757 | } |
| 1172 | for (int i = 23; i < 25; i++) | ||
| 1173 | erase_check_erase(mt, i); | ||
| 1174 | 758 | ||
| 1175 | for (int i = 0; i < 25; i++) { | 759 | mas_unlock(&mas); |
| 1176 | if (i <= 25 && i >= 13) | 760 | for (i = 0; i < req_range_count; i += 5) { |
| 1177 | check_load(mt, set[i], NULL); | 761 | #if DEBUG_REV_RANGE |
| 1178 | else | 762 | pr_debug("\tReverse request between %lu-%lu size %lu, should get %lu\n", |
| 1179 | erase_check_load(mt, i); | 763 | req_range[i] >> 12, |
| 764 | (req_range[i + 1] >> 12) - 1, | ||
| 765 | req_range[i+2] >> 12, | ||
| 766 | req_range[i+3] >> 12); | ||
| 767 | #endif | ||
| 768 | check_mtree_alloc_rrange(mt, | ||
| 769 | req_range[i] >> 12, /* start */ | ||
| 770 | req_range[i+1] >> 12, /* end */ | ||
| 771 | req_range[i+2] >> 12, /* size */ | ||
| 772 | req_range[i+3] >> 12, /* expected address */ | ||
| 773 | req_range[i+4], /* expected return */ | ||
| 774 | xa_mk_value(req_range[i] >> 12)); /* pointer */ | ||
| 775 | mt_validate(mt); | ||
| 1180 | } | 776 | } |
| 1181 | 777 | ||
| 1182 | /* Shrinking tree test. */ | 778 | mt_set_non_kernel(1); |
| 779 | mtree_erase(mt, 34148798727); /* create a deleted range. */ | ||
| 780 | check_mtree_alloc_rrange(mt, 0, 34359052173, 210253414, | ||
| 781 | 34148798725, 0, mt); | ||
| 1183 | 782 | ||
| 1184 | for (int i = 13; i < ARRAY_SIZE(set); i++) | 783 | mtree_destroy(mt); |
| 1185 | erase_check_insert(mt, i); | 784 | } |
| 1186 | 785 | ||
| 1187 | mt_set_non_kernel(99); | 786 | static noinline void check_alloc_range(struct maple_tree *mt) |
| 1188 | for (int i = 18; i < ARRAY_SIZE(set); i++) { | ||
| 1189 | erase_check_erase(mt, i); | ||
| 1190 | for (int j = 0; j < ARRAY_SIZE(set); j++) { | ||
| 1191 | if (j < 18 || j > i) | ||
| 1192 | erase_check_load(mt, j); | ||
| 1193 | else | ||
| 1194 | check_load(mt, set[j], NULL); | ||
| 1195 | } | ||
| 1196 | } | ||
| 1197 | mt_set_non_kernel(35); | ||
| 1198 | for (int i = 0; i < 18; i++) { | ||
| 1199 | erase_check_erase(mt, i); | ||
| 1200 | for (int j = 0; j < ARRAY_SIZE(set); j++) { | ||
| 1201 | if (j < 18 && j > i) | ||
| 1202 | erase_check_load(mt, j); | ||
| 1203 | else | ||
| 1204 | check_load(mt, set[j], NULL); | ||
| 1205 | } | ||
| 1206 | } | ||
| 1207 | erase_check_insert(mt, 8); | ||
| 1208 | erase_check_insert(mt, 9); | ||
| 1209 | erase_check_erase(mt, 8); | ||
| 1210 | rcu_unregister_thread(); | ||
| 1211 | } | ||
| 1212 | |||
| 1213 | #define erase_check_store_range(mt, a, i, ptr) mtree_test_store_range(mt, \ | ||
| 1214 | a[(i)], a[(i + 1)], ptr) | ||
| 1215 | #define STORE 1 | ||
| 1216 | #define SNULL 2 | ||
| 1217 | #define ERASE 3 | ||
| 1218 | #define ec_type_str(x) \ | ||
| 1219 | (((x) == STORE) ? \ | ||
| 1220 | "STORE" : \ | ||
| 1221 | (((x) == SNULL) ? \ | ||
| 1222 | "SNULL" : "ERASE") \ | ||
| 1223 | ) | ||
| 1224 | #define check_erase2_debug 0 | ||
| 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) | ||
| 1407 | { | 787 | { |
| 1408 | bool ret; | 788 | /* |
| 1409 | 789 | * Generated by: | |
| 1410 | retry: | 790 | * cat /proc/self/maps|awk '{print $1}'| |
| 1411 | ret = false; | 791 | * awk -F "-" '{printf "0x%s, 0x%s, ", $1, $2}' |
| 1412 | mas_start(mas); | 792 | */ |
| 1413 | if (mas_is_none(mas)) | ||
| 1414 | goto not_found; | ||
| 1415 | |||
| 1416 | if (mas_is_ptr(mas)) { | ||
| 1417 | *range_min = *range_max = 0; | ||
| 1418 | if (!mas->index) | ||
| 1419 | return true; | ||
| 1420 | |||
| 1421 | goto not_found; | ||
| 1422 | } | ||
| 1423 | |||
| 1424 | ret = mas_descend_walk(mas, range_min, range_max); | ||
| 1425 | if (unlikely(mte_dead_node(mas->node))) { | ||
| 1426 | mas->node = MAS_START; | ||
| 1427 | goto retry; | ||
| 1428 | } | ||
| 1429 | |||
| 1430 | return ret; | ||
| 1431 | 793 | ||
| 1432 | not_found: | 794 | unsigned long range[] = { |
| 1433 | mas->offset = MAPLE_NODE_SLOTS; | 795 | /* Inclusive , Exclusive. */ |
| 1434 | return false; | 796 | 0x565234af2000, 0x565234af4000, |
| 1435 | } | 797 | 0x565234af4000, 0x565234af9000, |
| 798 | 0x565234af9000, 0x565234afb000, | ||
| 799 | 0x565234afc000, 0x565234afd000, | ||
| 800 | 0x565234afd000, 0x565234afe000, | ||
| 801 | 0x565235def000, 0x565235e10000, | ||
| 802 | 0x7f36d4bfd000, 0x7f36d4ee2000, | ||
| 803 | 0x7f36d4ee2000, 0x7f36d4f04000, | ||
| 804 | 0x7f36d4f04000, 0x7f36d504c000, | ||
| 805 | 0x7f36d504c000, 0x7f36d5098000, | ||
| 806 | 0x7f36d5098000, 0x7f36d5099000, | ||
| 807 | 0x7f36d5099000, 0x7f36d509d000, | ||
| 808 | 0x7f36d509d000, 0x7f36d509f000, | ||
| 809 | 0x7f36d509f000, 0x7f36d50a5000, | ||
| 810 | 0x7f36d50b9000, 0x7f36d50db000, | ||
| 811 | 0x7f36d50db000, 0x7f36d50dc000, | ||
| 812 | 0x7f36d50dc000, 0x7f36d50fa000, | ||
| 813 | 0x7f36d50fa000, 0x7f36d5102000, | ||
| 814 | 0x7f36d5102000, 0x7f36d5103000, | ||
| 815 | 0x7f36d5103000, 0x7f36d5104000, | ||
| 816 | 0x7f36d5104000, 0x7f36d5105000, | ||
| 817 | 0x7fff5876b000, 0x7fff5878d000, | ||
| 818 | 0x7fff5878e000, 0x7fff58791000, | ||
| 819 | 0x7fff58791000, 0x7fff58793000, | ||
| 820 | }; | ||
| 821 | unsigned long holes[] = { | ||
| 822 | /* Start of hole, end of hole, size of hole (+1) */ | ||
| 823 | 0x565234afb000, 0x565234afc000, 0x1000, | ||
| 824 | 0x565234afe000, 0x565235def000, 0x12F1000, | ||
| 825 | 0x565235e10000, 0x7f36d4bfd000, 0x28E49EDED000, | ||
| 826 | }; | ||
| 1436 | 827 | ||
| 1437 | static inline void *mas_range_load(struct ma_state *mas, | 828 | /* |
| 1438 | unsigned long *range_min, unsigned long *range_max) | 829 | * req_range consists of 4 values. |
| 830 | * 1. min index | ||
| 831 | * 2. max index | ||
| 832 | * 3. size | ||
| 833 | * 4. number that should be returned. | ||
| 834 | * 5. return value | ||
| 835 | */ | ||
| 836 | unsigned long req_range[] = { | ||
| 837 | 0x565234af9000, /* Min */ | ||
| 838 | 0x7fff58791000, /* Max */ | ||
| 839 | 0x1000, /* Size */ | ||
| 840 | 0x565234afb000, /* First hole in our data of size 1000. */ | ||
| 841 | 0, /* Return value success. */ | ||
| 1439 | 842 | ||
| 1440 | { | 843 | 0x0, /* Min */ |
| 1441 | void *entry = NULL; | 844 | 0x7fff58791000, /* Max */ |
| 1442 | unsigned long index = mas->index; | 845 | 0x1F00, /* Size */ |
| 846 | 0x0, /* First hole in our data of size 2000. */ | ||
| 847 | 0, /* Return value success. */ | ||
| 1443 | 848 | ||
| 1444 | if (mas_is_none(mas) || mas_is_paused(mas)) | 849 | /* Test ascend. */ |
| 1445 | mas->node = MAS_START; | 850 | 34148797436 << 12, /* Min */ |
| 1446 | retry: | 851 | 0x7fff587AF000, /* Max */ |
| 1447 | if (mas_tree_walk(mas, range_min, range_max)) | 852 | 0x3000, /* Size */ |
| 1448 | if (unlikely(mas->node == MAS_ROOT)) | 853 | 34148798629 << 12, /* Expected location */ |
| 1449 | return mas_root(mas); | 854 | 0, /* Return value success. */ |
| 1450 | 855 | ||
| 1451 | if (likely(mas->offset != MAPLE_NODE_SLOTS)) | 856 | /* Test failing. */ |
| 1452 | entry = mas_get_slot(mas, mas->offset); | 857 | 34148798623 << 12, /* Min */ |
| 858 | 34148798683 << 12, /* Max */ | ||
| 859 | 0x15000, /* Size */ | ||
| 860 | 0, /* Expected location */ | ||
| 861 | -EBUSY, /* Return value failed. */ | ||
| 1453 | 862 | ||
| 1454 | if (mas_dead_node(mas, index)) | 863 | /* Test filling entire gap. */ |
| 1455 | goto retry; | 864 | 34148798623 << 12, /* Min */ |
| 865 | 0x7fff587AF000, /* Max */ | ||
| 866 | 0x10000, /* Size */ | ||
| 867 | 34148798632 << 12, /* Expected location */ | ||
| 868 | 0, /* Return value success. */ | ||
| 1456 | 869 | ||
| 1457 | return entry; | 870 | /* Test walking off the end of root. */ |
| 1458 | } | 871 | 0, /* Min */ |
| 1459 | static noinline void check_erase2_testset(struct maple_tree *mt, | 872 | -1, /* Max */ |
| 1460 | unsigned long *set, unsigned long size) | 873 | -1, /* Size */ |
| 1461 | { | 874 | 0, /* Expected location */ |
| 1462 | int entry_count = 0; | 875 | -EBUSY, /* Return value failure. */ |
| 1463 | int check = 0; | ||
| 1464 | void *foo; | ||
| 1465 | unsigned long addr = 0; | ||
| 1466 | void *s_entry = NULL, *e_entry = NULL; | ||
| 1467 | 876 | ||
| 877 | /* Test looking for too large a hole across entire range. */ | ||
| 878 | 0, /* Min */ | ||
| 879 | -1, /* Max */ | ||
| 880 | 4503599618982063UL << 12, /* Size */ | ||
| 881 | 34359052178 << 12, /* Expected location */ | ||
| 882 | -EBUSY, /* Return failure. */ | ||
| 883 | }; | ||
| 884 | int i, range_count = ARRAY_SIZE(range); | ||
| 885 | int req_range_count = ARRAY_SIZE(req_range); | ||
| 886 | unsigned long min = 0x565234af2000; | ||
| 1468 | MA_STATE(mas, mt, 0, 0); | 887 | MA_STATE(mas, mt, 0, 0); |
| 1469 | 888 | ||
| 1470 | for (int i = 0; i < size; i += 3) { | 889 | mtree_store_range(mt, MTREE_ALLOC_MAX, ULONG_MAX, XA_ZERO_ENTRY, |
| 1471 | unsigned long s_min, s_max; | 890 | GFP_KERNEL); |
| 1472 | unsigned long e_min, e_max; | 891 | for (i = 0; i < range_count; i += 2) { |
| 1473 | void *value = NULL; | 892 | #define DEBUG_ALLOC_RANGE 0 |
| 1474 | 893 | #if DEBUG_ALLOC_RANGE | |
| 1475 | MA_STATE(mas_start, mt, set[i+1], set[i+1]); | 894 | pr_debug("\tInsert %lu-%lu\n", range[i] >> 12, |
| 1476 | MA_STATE(mas_end, mt, set[i+2], set[i+2]); | 895 | (range[i + 1] >> 12) - 1); |
| 1477 | mt_set_non_kernel(127); | ||
| 1478 | #if check_erase2_debug | ||
| 1479 | pr_err("%s: %d %s %lu - %lu\n", __func__, i, | ||
| 1480 | ec_type_str(set[i]), | ||
| 1481 | set[i+1], set[i+2]); | ||
| 1482 | #endif | ||
| 1483 | s_entry = mas_range_load(&mas_start, &s_min, &s_max); | ||
| 1484 | e_entry = mas_range_load(&mas_end, &e_min, &e_max); | ||
| 1485 | |||
| 1486 | switch (set[i]) { | ||
| 1487 | case SNULL: | ||
| 1488 | if ((s_min == set[i+1]) && (s_max == set[i+2])) { | ||
| 1489 | if (s_entry) | ||
| 1490 | entry_count--; | ||
| 1491 | } else if ((s_min != set[i+1]) && (s_max != set[i+2])) { | ||
| 1492 | entry_count++; | ||
| 1493 | } else if ((mas_start.node != mas_end.node) || | ||
| 1494 | (mas_start.offset != mas_end.offset)) { | ||
| 1495 | entry_count -= | ||
| 1496 | mas_ce2_over_count(&mas_start, &mas_end, | ||
| 1497 | s_entry, s_min, | ||
| 1498 | e_entry, e_max, set, i, | ||
| 1499 | true); | ||
| 1500 | } | ||
| 1501 | |||
| 1502 | |||
| 1503 | erase_check_store_range(mt, set, i + 1, value); | ||
| 1504 | break; | ||
| 1505 | case STORE: | ||
| 1506 | value = xa_mk_value(set[i + 1]); | ||
| 1507 | if (mas_start.offset > mt_slot_count(mas_start.node)) { | ||
| 1508 | entry_count++; /* appending an entry. */ | ||
| 1509 | } else if ((s_min == e_min) && (s_max == e_max)) { | ||
| 1510 | if (!entry_count) | ||
| 1511 | entry_count++; | ||
| 1512 | |||
| 1513 | else if (s_entry) { | ||
| 1514 | if (e_max > mas_end.last) | ||
| 1515 | entry_count++; | ||
| 1516 | |||
| 1517 | if (s_min < mas_start.index) | ||
| 1518 | entry_count++; | ||
| 1519 | |||
| 1520 | } else { | ||
| 1521 | entry_count++; | ||
| 1522 | } | ||
| 1523 | } else { | ||
| 1524 | entry_count -= | ||
| 1525 | mas_ce2_over_count(&mas_start, &mas_end, | ||
| 1526 | s_entry, s_min, | ||
| 1527 | e_entry, e_max, set, i, | ||
| 1528 | false); | ||
| 1529 | } | ||
| 1530 | |||
| 1531 | erase_check_store_range(mt, set, i + 1, value); | ||
| 1532 | break; | ||
| 1533 | case ERASE: | ||
| 1534 | if (!s_entry) | ||
| 1535 | break; | ||
| 1536 | check_erase(mt, set[i+1], xa_mk_value(set[i+1])); | ||
| 1537 | entry_count--; | ||
| 1538 | break; | ||
| 1539 | } | ||
| 1540 | mt_validate(mt); | ||
| 1541 | if (entry_count) | ||
| 1542 | MT_BUG_ON(mt, !mt_height(mt)); | ||
| 1543 | #if check_erase2_debug > 1 | ||
| 1544 | mt_dump(mt); | 896 | mt_dump(mt); |
| 1545 | #endif | 897 | #endif |
| 1546 | #if check_erase2_debug | 898 | check_insert_range(mt, range[i] >> 12, (range[i + 1] >> 12) - 1, |
| 1547 | pr_err("Done\n"); | 899 | xa_mk_value(range[i] >> 12), 0); |
| 1548 | #endif | 900 | mt_validate(mt); |
| 901 | } | ||
| 1549 | 902 | ||
| 1550 | check = 0; | ||
| 1551 | addr = 0; | ||
| 1552 | mt_for_each(mt, foo, addr, ULONG_MAX) { | ||
| 1553 | check++; | ||
| 1554 | #if check_erase2_debug > 2 | ||
| 1555 | pr_err("mt: %lu -> %p (%d)\n", addr+1, foo, check); | ||
| 1556 | #endif | ||
| 1557 | if (check > entry_count) | ||
| 1558 | break; | ||
| 1559 | } | ||
| 1560 | 903 | ||
| 1561 | #if check_erase2_debug > 2 | ||
| 1562 | pr_err("mt_for_each %d and count %d\n", check, entry_count); | ||
| 1563 | #endif | ||
| 1564 | 904 | ||
| 1565 | MT_BUG_ON(mt, check != entry_count); | 905 | mas_lock(&mas); |
| 906 | for (i = 0; i < ARRAY_SIZE(holes); i += 3) { | ||
| 1566 | 907 | ||
| 1567 | check = 0; | 908 | #if DEBUG_ALLOC_RANGE |
| 1568 | addr = 0; | 909 | pr_debug("\tGet empty %lu-%lu size %lu (%lx-%lx)\n", min >> 12, |
| 910 | holes[i+1] >> 12, holes[i+2] >> 12, | ||
| 911 | min, holes[i+1]); | ||
| 912 | #endif | ||
| 913 | MT_BUG_ON(mt, mas_empty_area(&mas, min >> 12, | ||
| 914 | holes[i+1] >> 12, | ||
| 915 | holes[i+2] >> 12)); | ||
| 916 | MT_BUG_ON(mt, mas.index != holes[i] >> 12); | ||
| 917 | min = holes[i+1]; | ||
| 1569 | mas_reset(&mas); | 918 | mas_reset(&mas); |
| 1570 | mas.index = 0; | 919 | } |
| 1571 | rcu_read_lock(); | 920 | mas_unlock(&mas); |
| 1572 | mas_for_each(&mas, foo, ULONG_MAX) { | 921 | for (i = 0; i < req_range_count; i += 5) { |
| 1573 | if (xa_is_zero(foo)) { | 922 | #if DEBUG_ALLOC_RANGE |
| 1574 | if (addr == mas.index) { | 923 | pr_debug("\tTest %d: %lu-%lu size %lu expected %lu (%lu-%lu)\n", |
| 1575 | mt_dump(mas.tree); | 924 | i/5, req_range[i] >> 12, req_range[i + 1] >> 12, |
| 1576 | pr_err("retry failed %lu - %lu\n", | 925 | req_range[i + 2] >> 12, req_range[i + 3] >> 12, |
| 1577 | mas.index, mas.last); | 926 | req_range[i], req_range[i+1]); |
| 1578 | MT_BUG_ON(mt, 1); | ||
| 1579 | } | ||
| 1580 | addr = mas.index; | ||
| 1581 | continue; | ||
| 1582 | } | ||
| 1583 | #if check_erase2_debug > 2 | ||
| 1584 | pr_err("mas: %lu -> %p\n", mas.index, foo); | ||
| 1585 | #endif | 927 | #endif |
| 1586 | check++; | 928 | check_mtree_alloc_range(mt, |
| 1587 | if (check > entry_count) | 929 | req_range[i] >> 12, /* start */ |
| 1588 | break; | 930 | req_range[i+1] >> 12, /* end */ |
| 1589 | } | 931 | req_range[i+2] >> 12, /* size */ |
| 1590 | rcu_read_unlock(); | 932 | req_range[i+3] >> 12, /* expected address */ |
| 1591 | #if check_erase2_debug > 2 | 933 | req_range[i+4], /* expected return */ |
| 1592 | pr_err("mas_for_each %d and count %d\n", check, entry_count); | 934 | xa_mk_value(req_range[i] >> 12)); /* pointer */ |
| 1593 | mt_validate(mt); | 935 | mt_validate(mt); |
| 936 | #if DEBUG_ALLOC_RANGE | ||
| 937 | mt_dump(mt); | ||
| 1594 | #endif | 938 | #endif |
| 1595 | |||
| 1596 | MT_BUG_ON(mt, check != entry_count); | ||
| 1597 | |||
| 1598 | MT_BUG_ON(mt, mtree_load(mas.tree, 0) != NULL); | ||
| 1599 | } | 939 | } |
| 1600 | } | ||
| 1601 | 940 | ||
| 941 | mtree_destroy(mt); | ||
| 942 | } | ||
| 943 | #endif | ||
| 1602 | 944 | ||
| 1603 | /* These tests were pulled from kvm tests. */ | 945 | static noinline void check_ranges(struct maple_tree *mt) |
| 1604 | static noinline void check_erase2_sets(struct maple_tree *mt) | ||
| 1605 | { | 946 | { |
| 1606 | void *entry; | 947 | int i, val, val2; |
| 1607 | unsigned long start = 0; | 948 | unsigned long r[] = { |
| 1608 | unsigned long set[] = { | 949 | 10, 15, |
| 1609 | STORE, 140737488347136, 140737488351231, | 950 | 20, 25, |
| 1610 | STORE, 140721266458624, 140737488351231, | 951 | 17, 22, /* Overlaps previous range. */ |
| 1611 | ERASE, 140721266458624, 140737488351231, | 952 | 9, 1000, /* Huge. */ |
| 1612 | STORE, 140721266458624, 140721266462719, | 953 | 100, 200, |
| 1613 | STORE, 94735788949504, 94735789121535, | 954 | 45, 168, |
| 1614 | ERASE, 94735788949504, 94735789121535, | 955 | 118, 128, |
| 1615 | STORE, 94735788949504, 94735788965887, | 956 | }; |
| 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 | }; | ||
| 1846 | 957 | ||
| 1847 | unsigned long set6[] = { | 958 | MT_BUG_ON(mt, !mtree_empty(mt)); |
| 1848 | STORE, 140737488347136, 140737488351231, | 959 | check_insert_range(mt, r[0], r[1], xa_mk_value(r[0]), 0); |
| 1849 | STORE, 140722999021568, 140737488351231, | 960 | check_insert_range(mt, r[2], r[3], xa_mk_value(r[2]), 0); |
| 1850 | ERASE, 140722999021568, 140737488351231, | 961 | check_insert_range(mt, r[4], r[5], xa_mk_value(r[4]), -EEXIST); |
| 1851 | STORE, 140722999021568, 140722999025663, | 962 | MT_BUG_ON(mt, !mt_height(mt)); |
| 1852 | STORE, 94901500268544, 94901500440575, | 963 | /* Store */ |
| 1853 | ERASE, 94901500268544, 94901500440575, | 964 | check_store_range(mt, r[4], r[5], xa_mk_value(r[4]), 0); |
| 1854 | STORE, 94901500268544, 94901500284927, | 965 | check_store_range(mt, r[6], r[7], xa_mk_value(r[6]), 0); |
| 1855 | STORE, 94901500284928, 94901500440575, | 966 | check_store_range(mt, r[8], r[9], xa_mk_value(r[8]), 0); |
| 1856 | ERASE, 94901500284928, 94901500440575, | 967 | MT_BUG_ON(mt, !mt_height(mt)); |
| 1857 | STORE, 94901500284928, 94901500387327, | 968 | mtree_destroy(mt); |
| 1858 | STORE, 94901500387328, 94901500428287, | 969 | MT_BUG_ON(mt, mt_height(mt)); |
| 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 | }; | ||
| 2243 | 970 | ||
| 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.
| @@ -890,6 +890,7 @@ out: · 889 unmodified lines | |||
| 890 | static int dbgfs_rm_context(char *name) | 890 | static int dbgfs_rm_context(char *name) |
| 891 | { | 891 | { |
| 892 | struct dentry *root, *dir, **new_dirs; | 892 | struct dentry *root, *dir, **new_dirs; |
| 893 | struct inode *inode; | ||
| 893 | struct damon_ctx **new_ctxs; | 894 | struct damon_ctx **new_ctxs; |
| 894 | int i, j; | 895 | int i, j; |
| 895 | int ret = 0; | 896 | int ret = 0; |
| @@ -905,6 +906,12 @@ static int dbgfs_rm_context(char *name) · 9 unmodified lines | |||
| 905 | if (!dir) | 906 | if (!dir) |
| 906 | return -ENOENT; | 907 | return -ENOENT; |
| 907 | 908 | ||
| 909 | inode = d_inode(dir); | ||
| 910 | if (!S_ISDIR(inode->i_mode)) { | ||
| 911 | ret = -EINVAL; | ||
| 912 | goto out_dput; | ||
| 913 | } | ||
| 914 | |||
| 908 | new_dirs = kmalloc_array(dbgfs_nr_ctxs - 1, sizeof(*dbgfs_dirs), | 915 | new_dirs = kmalloc_array(dbgfs_nr_ctxs - 1, sizeof(*dbgfs_dirs), |
| 909 | GFP_KERNEL); | 916 | GFP_KERNEL); |
| 910 | if (!new_dirs) { | 917 | if (!new_dirs) { |
| @@ -2206,9 +2206,12 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd, · 2205 unmodified lines | |||
| 2206 | entry = pte_wrprotect(entry); | 2206 | entry = pte_wrprotect(entry); |
| 2207 | if (!young) | 2207 | if (!young) |
| 2208 | entry = pte_mkold(entry); | 2208 | entry = pte_mkold(entry); |
| 2209 | /* NOTE: this may set soft-dirty too on some archs */ | 2209 | /* |
| 2210 | if (dirty) | 2210 | * NOTE: we don't do pte_mkdirty when dirty==true |
| 2211 | entry = pte_mkdirty(entry); | 2211 | * because it breaks sparc64 which can sigsegv |
| 2212 | * random process. Need to revisit when we figure | ||
| 2213 | * out what is special with sparc64. | ||
| 2214 | */ | ||
| 2212 | if (soft_dirty) | 2215 | if (soft_dirty) |
| 2213 | entry = pte_mksoft_dirty(entry); | 2216 | entry = pte_mksoft_dirty(entry); |
| 2214 | if (uffd_wp) | 2217 | if (uffd_wp) |
| @@ -6111,6 +6111,10 @@ int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm, · 6110 unmodified lines | |||
| 6111 | 6111 | ||
| 6112 | ptl = huge_pte_lock(h, dst_mm, dst_pte); | 6112 | ptl = huge_pte_lock(h, dst_mm, dst_pte); |
| 6113 | 6113 | ||
| 6114 | ret = -EIO; | ||
| 6115 | if (PageHWPoison(page)) | ||
| 6116 | goto out_release_unlock; | ||
| 6117 | |||
| 6114 | /* | 6118 | /* |
| 6115 | * We allow to overwrite a pte marker: consider when both MISSING|WP | 6119 | * We allow to overwrite a pte marker: consider when both MISSING|WP |
| 6116 | * registered, we firstly wr-protect a none pte which has no page cache | 6120 | * registered, we firstly wr-protect a none pte which has no page cache |
| @@ -11,6 +11,7 @@ · 10 unmodified lines | |||
| 11 | #define pr_fmt(fmt) "HugeTLB: " fmt | 11 | #define pr_fmt(fmt) "HugeTLB: " fmt |
| 12 | 12 | ||
| 13 | #include <linux/pgtable.h> | 13 | #include <linux/pgtable.h> |
| 14 | #include <linux/moduleparam.h> | ||
| 14 | #include <linux/bootmem_info.h> | 15 | #include <linux/bootmem_info.h> |
| 15 | #include <asm/pgalloc.h> | 16 | #include <asm/pgalloc.h> |
| 16 | #include <asm/tlbflush.h> | 17 | #include <asm/tlbflush.h> |
| @@ -124,6 +124,8 @@ static __always_inline bool kmsan_in_runtime(void) · 123 unmodified lines | |||
| 124 | { | 124 | { |
| 125 | if ((hardirq_count() >> HARDIRQ_SHIFT) > 1) | 125 | if ((hardirq_count() >> HARDIRQ_SHIFT) > 1) |
| 126 | return true; | 126 | return true; |
| 127 | if (in_nmi()) | ||
| 128 | return true; | ||
| 127 | return kmsan_get_context()->kmsan_in_runtime; | 129 | return kmsan_get_context()->kmsan_in_runtime; |
| 128 | } | 130 | } |
| 129 | 131 | ||
| @@ -1080,6 +1080,7 @@ static int me_huge_page(struct page_state *ps, struct page *p) · 1079 unmodified lines | |||
| 1080 | int res; | 1080 | int res; |
| 1081 | struct page *hpage = compound_head(p); | 1081 | struct page *hpage = compound_head(p); |
| 1082 | struct address_space *mapping; | 1082 | struct address_space *mapping; |
| 1083 | bool extra_pins = false; | ||
| 1083 | 1084 | ||
| 1084 | if (!PageHuge(hpage)) | 1085 | if (!PageHuge(hpage)) |
| 1085 | return MF_DELAYED; | 1086 | return MF_DELAYED; |
| @@ -1087,6 +1088,8 @@ static int me_huge_page(struct page_state *ps, struct page *p) · 1 unmodified line | |||
| 1087 | mapping = page_mapping(hpage); | 1088 | mapping = page_mapping(hpage); |
| 1088 | if (mapping) { | 1089 | if (mapping) { |
| 1089 | res = truncate_error_page(hpage, page_to_pfn(p), mapping); | 1090 | res = truncate_error_page(hpage, page_to_pfn(p), mapping); |
| 1091 | /* The page is kept in page cache. */ | ||
| 1092 | extra_pins = true; | ||
| 1090 | unlock_page(hpage); | 1093 | unlock_page(hpage); |
| 1091 | } else { | 1094 | } else { |
| 1092 | unlock_page(hpage); | 1095 | unlock_page(hpage); |
| @@ -1104,7 +1107,7 @@ static int me_huge_page(struct page_state *ps, struct page *p) · 11 unmodified lines | |||
| 1104 | } | 1107 | } |
| 1105 | } | 1108 | } |
| 1106 | 1109 | ||
| 1107 | if (has_extra_refcount(ps, p, false)) | 1110 | if (has_extra_refcount(ps, p, extra_pins)) |
| 1108 | res = MF_FAILED; | 1111 | res = MF_FAILED; |
| 1109 | 1112 | ||
| 1110 | return res; | 1113 | return res; |
| @@ -335,6 +335,7 @@ void *memremap_pages(struct dev_pagemap *pgmap, int nid) · 334 unmodified lines | |||
| 335 | WARN(1, "File system DAX not supported\n"); | 335 | WARN(1, "File system DAX not supported\n"); |
| 336 | return ERR_PTR(-EINVAL); | 336 | return ERR_PTR(-EINVAL); |
| 337 | } | 337 | } |
| 338 | params.pgprot = pgprot_decrypted(params.pgprot); | ||
| 338 | break; | 339 | break; |
| 339 | case MEMORY_DEVICE_GENERIC: | 340 | case MEMORY_DEVICE_GENERIC: |
| 340 | break; | 341 | break; |
| @@ -2674,6 +2674,8 @@ cannot_expand: · 2673 unmodified lines | |||
| 2674 | error = -EINVAL; | 2674 | error = -EINVAL; |
| 2675 | if (file) | 2675 | if (file) |
| 2676 | goto close_and_free_vma; | 2676 | goto close_and_free_vma; |
| 2677 | else if (vma->vm_file) | ||
| 2678 | goto unmap_and_free_vma; | ||
| 2677 | else | 2679 | else |
| 2678 | goto free_vma; | 2680 | goto free_vma; |
| 2679 | } | 2681 | } |
| @@ -2682,6 +2684,8 @@ cannot_expand: · 2 unmodified lines | |||
| 2682 | error = -ENOMEM; | 2684 | error = -ENOMEM; |
| 2683 | if (file) | 2685 | if (file) |
| 2684 | goto close_and_free_vma; | 2686 | goto close_and_free_vma; |
| 2687 | else if (vma->vm_file) | ||
| 2688 | goto unmap_and_free_vma; | ||
| 2685 | else | 2689 | else |
| 2686 | goto free_vma; | 2690 | goto free_vma; |
| 2687 | } | 2691 | } |
| @@ -2751,7 +2755,7 @@ unmap_and_free_vma: · 63 unmodified lines | |||
| 2751 | 2755 | ||
| 2752 | /* Undo any partial mapping done by a device driver. */ | 2756 | /* Undo any partial mapping done by a device driver. */ |
| 2753 | unmap_region(mm, mas.tree, vma, prev, next, vma->vm_start, vma->vm_end); | 2757 | unmap_region(mm, mas.tree, vma, prev, next, vma->vm_start, vma->vm_end); |
| 2754 | if (vm_flags & VM_SHARED) | 2758 | if (file && (vm_flags & VM_SHARED)) |
| 2755 | mapping_unmap_writable(file->f_mapping); | 2759 | mapping_unmap_writable(file->f_mapping); |
| 2756 | free_vma: | 2760 | free_vma: |
| 2757 | vm_area_free(vma); | 2761 | vm_area_free(vma); |
| @@ -941,7 +941,7 @@ void *__do_kmalloc_node(size_t size, gfp_t flags, int node, unsigned long caller · 940 unmodified lines | |||
| 941 | 941 | ||
| 942 | if (unlikely(size > KMALLOC_MAX_CACHE_SIZE)) { | 942 | if (unlikely(size > KMALLOC_MAX_CACHE_SIZE)) { |
| 943 | ret = __kmalloc_large_node(size, flags, node); | 943 | ret = __kmalloc_large_node(size, flags, node); |
| 944 | trace_kmalloc(_RET_IP_, ret, size, | 944 | trace_kmalloc(caller, ret, size, |
| 945 | PAGE_SIZE << get_order(size), flags, node); | 945 | PAGE_SIZE << get_order(size), flags, node); |
| 946 | return ret; | 946 | return ret; |
| 947 | } | 947 | } |
| @@ -953,7 +953,7 @@ void *__do_kmalloc_node(size_t size, gfp_t flags, int node, unsigned long caller · 5 unmodified lines | |||
| 953 | 953 | ||
| 954 | ret = __kmem_cache_alloc_node(s, flags, node, size, caller); | 954 | ret = __kmem_cache_alloc_node(s, flags, node, size, caller); |
| 955 | ret = kasan_kmalloc(s, ret, size, flags); | 955 | ret = kasan_kmalloc(s, ret, size, flags); |
| 956 | trace_kmalloc(_RET_IP_, ret, size, s->size, flags, node); | 956 | trace_kmalloc(caller, ret, size, s->size, flags, node); |
| 957 | return ret; | 957 | return ret; |
| 958 | } | 958 | } |
| 959 | 959 | ||
| @@ -1010,7 +1010,7 @@ EXPORT_SYMBOL(kfree); · 50 unmodified lines | |||
| 1010 | 1010 | ||
| 1011 | /** | 1011 | /** |
| 1012 | * __ksize -- Report full size of underlying allocation | 1012 | * __ksize -- Report full size of underlying allocation |
| 1013 | * @objp: pointer to the object | 1013 | * @object: pointer to the object |
| 1014 | * | 1014 | * |
| 1015 | * This should only be used internally to query the true size of allocations. | 1015 | * This should only be used internally to query the true size of allocations. |
| 1016 | * It is not meant to be a way to discover the usable size of an allocation | 1016 | * It is not meant to be a way to discover the usable size of an allocation |
| @@ -1018,7 +1018,7 @@ EXPORT_SYMBOL(kfree); · 1 unmodified line | |||
| 1018 | * the originally requested allocation size may trigger KASAN, UBSAN_BOUNDS, | 1018 | * the originally requested allocation size may trigger KASAN, UBSAN_BOUNDS, |
| 1019 | * and/or FORTIFY_SOURCE. | 1019 | * and/or FORTIFY_SOURCE. |
| 1020 | * | 1020 | * |
| 1021 | * Return: size of the actual memory used by @objp in bytes | 1021 | * Return: size of the actual memory used by @object in bytes |
| 1022 | */ | 1022 | */ |
| 1023 | size_t __ksize(const void *object) | 1023 | size_t __ksize(const void *object) |
| 1024 | { | 1024 | { |
| @@ -1040,7 +1040,6 @@ size_t __ksize(const void *object) · 15 unmodified lines | |||
| 1040 | return slab_ksize(folio_slab(folio)->slab_cache); | 1040 | return slab_ksize(folio_slab(folio)->slab_cache); |
| 1041 | } | 1041 | } |
| 1042 | 1042 | ||
| 1043 | #ifdef CONFIG_TRACING | ||
| 1044 | void *kmalloc_trace(struct kmem_cache *s, gfp_t gfpflags, size_t size) | 1043 | void *kmalloc_trace(struct kmem_cache *s, gfp_t gfpflags, size_t size) |
| 1045 | { | 1044 | { |
| 1046 | void *ret = __kmem_cache_alloc_node(s, gfpflags, NUMA_NO_NODE, | 1045 | void *ret = __kmem_cache_alloc_node(s, gfpflags, NUMA_NO_NODE, |
| @@ -1064,7 +1063,6 @@ void *kmalloc_node_trace(struct kmem_cache *s, gfp_t gfpflags, · 17 unmodified lines | |||
| 1064 | return ret; | 1063 | return ret; |
| 1065 | } | 1064 | } |
| 1066 | EXPORT_SYMBOL(kmalloc_node_trace); | 1065 | EXPORT_SYMBOL(kmalloc_node_trace); |
| 1067 | #endif /* !CONFIG_TRACING */ | ||
| 1068 | #endif /* !CONFIG_SLOB */ | 1066 | #endif /* !CONFIG_SLOB */ |
| 1069 | 1067 | ||
| 1070 | gfp_t kmalloc_fix_flags(gfp_t flags) | 1068 | gfp_t kmalloc_fix_flags(gfp_t flags) |
| @@ -1411,20 +1409,6 @@ void kfree_sensitive(const void *p) · 340 unmodified lines | |||
| 1411 | } | 1409 | } |
| 1412 | EXPORT_SYMBOL(kfree_sensitive); | 1410 | EXPORT_SYMBOL(kfree_sensitive); |
| 1413 | 1411 | ||
| 1414 | /** | ||
| 1415 | * ksize - get the actual amount of memory allocated for a given object | ||
| 1416 | * @objp: Pointer to the object | ||
| 1417 | * | ||
| 1418 | * kmalloc may internally round up allocations and return more memory | ||
| 1419 | * than requested. ksize() can be used to determine the actual amount of | ||
| 1420 | * memory allocated. The caller may use this additional memory, even though | ||
| 1421 | * a smaller amount of memory was initially specified with the kmalloc call. | ||
| 1422 | * The caller must guarantee that objp points to a valid object previously | ||
| 1423 | * allocated with either kmalloc() or kmem_cache_alloc(). The object | ||
| 1424 | * must not be freed during the duration of the call. | ||
| 1425 | * | ||
| 1426 | * Return: size of the actual memory used by @objp in bytes | ||
| 1427 | */ | ||
| 1428 | size_t ksize(const void *objp) | 1412 | size_t ksize(const void *objp) |
| 1429 | { | 1413 | { |
| 1430 | size_t size; | 1414 | size_t size; |
| @@ -64,7 +64,7 @@ int mfill_atomic_install_pte(struct mm_struct *dst_mm, pmd_t *dst_pmd, · 63 unmodified lines | |||
| 64 | pte_t _dst_pte, *dst_pte; | 64 | pte_t _dst_pte, *dst_pte; |
| 65 | bool writable = dst_vma->vm_flags & VM_WRITE; | 65 | bool writable = dst_vma->vm_flags & VM_WRITE; |
| 66 | bool vm_shared = dst_vma->vm_flags & VM_SHARED; | 66 | bool vm_shared = dst_vma->vm_flags & VM_SHARED; |
| 67 | bool page_in_cache = page->mapping; | 67 | bool page_in_cache = page_mapping(page); |
| 68 | spinlock_t *ptl; | 68 | spinlock_t *ptl; |
| 69 | struct inode *inode; | 69 | struct inode *inode; |
| 70 | pgoff_t offset, max_off; | 70 | pgoff_t offset, max_off; |
| @@ -450,7 +450,7 @@ int can_rx_register(struct net *net, struct net_device *dev, canid_t can_id, · 449 unmodified lines | |||
| 450 | 450 | ||
| 451 | /* insert new receiver (dev,canid,mask) -> (func,data) */ | 451 | /* insert new receiver (dev,canid,mask) -> (func,data) */ |
| 452 | 452 | ||
| 453 | if (dev && dev->type != ARPHRD_CAN) | 453 | if (dev && (dev->type != ARPHRD_CAN || !can_get_ml_priv(dev))) |
| 454 | return -ENODEV; | 454 | return -ENODEV; |
| 455 | 455 | ||
| 456 | if (dev && !net_eq(net, dev_net(dev))) | 456 | if (dev && !net_eq(net, dev_net(dev))) |
| @@ -902,6 +902,7 @@ out_pernet: · 445 unmodified lines | |||
| 902 | static __exit void can_exit(void) | 902 | static __exit void can_exit(void) |
| 903 | { | 903 | { |
| 904 | /* protocol unregister */ | 904 | /* protocol unregister */ |
| 905 | dev_remove_pack(&canxl_packet); | ||
| 905 | dev_remove_pack(&canfd_packet); | 906 | dev_remove_pack(&canfd_packet); |
| 906 | dev_remove_pack(&can_packet); | 907 | dev_remove_pack(&can_packet); |
| 907 | sock_unregister(PF_CAN); | 908 | sock_unregister(PF_CAN); |
| @@ -111,6 +111,9 @@ MODULE_ALIAS("can-proto-6"); · 110 unmodified lines | |||
| 111 | #define ISOTP_FC_WT 1 /* wait */ | 111 | #define ISOTP_FC_WT 1 /* wait */ |
| 112 | #define ISOTP_FC_OVFLW 2 /* overflow */ | 112 | #define ISOTP_FC_OVFLW 2 /* overflow */ |
| 113 | 113 | ||
| 114 | #define ISOTP_FC_TIMEOUT 1 /* 1 sec */ | ||
| 115 | #define ISOTP_ECHO_TIMEOUT 2 /* 2 secs */ | ||
| 116 | |||
| 114 | enum { | 117 | enum { |
| 115 | ISOTP_IDLE = 0, | 118 | ISOTP_IDLE = 0, |
| 116 | ISOTP_WAIT_FIRST_FC, | 119 | ISOTP_WAIT_FIRST_FC, |
| @@ -258,7 +261,8 @@ static int isotp_send_fc(struct sock *sk, int ae, u8 flowstatus) · 141 unmodified lines | |||
| 258 | so->lastrxcf_tstamp = ktime_set(0, 0); | 261 | so->lastrxcf_tstamp = ktime_set(0, 0); |
| 259 | 262 | ||
| 260 | /* start rx timeout watchdog */ | 263 | /* start rx timeout watchdog */ |
| 261 | hrtimer_start(&so->rxtimer, ktime_set(1, 0), HRTIMER_MODE_REL_SOFT); | 264 | hrtimer_start(&so->rxtimer, ktime_set(ISOTP_FC_TIMEOUT, 0), |
| 265 | HRTIMER_MODE_REL_SOFT); | ||
| 262 | return 0; | 266 | return 0; |
| 263 | } | 267 | } |
| 264 | 268 | ||
| @@ -344,6 +348,8 @@ static int check_pad(struct isotp_sock *so, struct canfd_frame *cf, · 79 unmodified lines | |||
| 344 | return 0; | 348 | return 0; |
| 345 | } | 349 | } |
| 346 | 350 | ||
| 351 | static void isotp_send_cframe(struct isotp_sock *so); | ||
| 352 | |||
| 347 | static int isotp_rcv_fc(struct isotp_sock *so, struct canfd_frame *cf, int ae) | 353 | static int isotp_rcv_fc(struct isotp_sock *so, struct canfd_frame *cf, int ae) |
| 348 | { | 354 | { |
| 349 | struct sock *sk = &so->sk; | 355 | struct sock *sk = &so->sk; |
| @@ -398,14 +404,15 @@ static int isotp_rcv_fc(struct isotp_sock *so, struct canfd_frame *cf, int ae) · 48 unmodified lines | |||
| 398 | case ISOTP_FC_CTS: | 404 | case ISOTP_FC_CTS: |
| 399 | so->tx.bs = 0; | 405 | so->tx.bs = 0; |
| 400 | so->tx.state = ISOTP_SENDING; | 406 | so->tx.state = ISOTP_SENDING; |
| 401 | /* start cyclic timer for sending CF frame */ | 407 | /* send CF frame and enable echo timeout handling */ |
| 402 | hrtimer_start(&so->txtimer, so->tx_gap, | 408 | hrtimer_start(&so->txtimer, ktime_set(ISOTP_ECHO_TIMEOUT, 0), |
| 403 | HRTIMER_MODE_REL_SOFT); | 409 | HRTIMER_MODE_REL_SOFT); |
| 410 | isotp_send_cframe(so); | ||
| 404 | break; | 411 | break; |
| 405 | 412 | ||
| 406 | case ISOTP_FC_WT: | 413 | case ISOTP_FC_WT: |
| 407 | /* start timer to wait for next FC frame */ | 414 | /* start timer to wait for next FC frame */ |
| 408 | hrtimer_start(&so->txtimer, ktime_set(1, 0), | 415 | hrtimer_start(&so->txtimer, ktime_set(ISOTP_FC_TIMEOUT, 0), |
| 409 | HRTIMER_MODE_REL_SOFT); | 416 | HRTIMER_MODE_REL_SOFT); |
| 410 | break; | 417 | break; |
| 411 | 418 | ||
| @@ -600,7 +607,7 @@ static int isotp_rcv_cf(struct sock *sk, struct canfd_frame *cf, int ae, · 188 unmodified lines | |||
| 600 | /* perform blocksize handling, if enabled */ | 607 | /* perform blocksize handling, if enabled */ |
| 601 | if (!so->rxfc.bs || ++so->rx.bs < so->rxfc.bs) { | 608 | if (!so->rxfc.bs || ++so->rx.bs < so->rxfc.bs) { |
| 602 | /* start rx timeout watchdog */ | 609 | /* start rx timeout watchdog */ |
| 603 | hrtimer_start(&so->rxtimer, ktime_set(1, 0), | 610 | hrtimer_start(&so->rxtimer, ktime_set(ISOTP_FC_TIMEOUT, 0), |
| 604 | HRTIMER_MODE_REL_SOFT); | 611 | HRTIMER_MODE_REL_SOFT); |
| 605 | return 0; | 612 | return 0; |
| 606 | } | 613 | } |
| @@ -829,7 +836,7 @@ static void isotp_rcv_echo(struct sk_buff *skb, void *data) · 222 unmodified lines | |||
| 829 | struct isotp_sock *so = isotp_sk(sk); | 836 | struct isotp_sock *so = isotp_sk(sk); |
| 830 | struct canfd_frame *cf = (struct canfd_frame *)skb->data; | 837 | struct canfd_frame *cf = (struct canfd_frame *)skb->data; |
| 831 | 838 | ||
| 832 | /* only handle my own local echo skb's */ | 839 | /* only handle my own local echo CF/SF skb's (no FF!) */ |
| 833 | if (skb->sk != sk || so->cfecho != *(u32 *)cf->data) | 840 | if (skb->sk != sk || so->cfecho != *(u32 *)cf->data) |
| 834 | return; | 841 | return; |
| 835 | 842 | ||
| @@ -849,13 +856,16 @@ static void isotp_rcv_echo(struct sk_buff *skb, void *data) · 13 unmodified lines | |||
| 849 | if (so->txfc.bs && so->tx.bs >= so->txfc.bs) { | 856 | if (so->txfc.bs && so->tx.bs >= so->txfc.bs) { |
| 850 | /* stop and wait for FC with timeout */ | 857 | /* stop and wait for FC with timeout */ |
| 851 | so->tx.state = ISOTP_WAIT_FC; | 858 | so->tx.state = ISOTP_WAIT_FC; |
| 852 | hrtimer_start(&so->txtimer, ktime_set(1, 0), | 859 | hrtimer_start(&so->txtimer, ktime_set(ISOTP_FC_TIMEOUT, 0), |
| 853 | HRTIMER_MODE_REL_SOFT); | 860 | HRTIMER_MODE_REL_SOFT); |
| 854 | return; | 861 | return; |
| 855 | } | 862 | } |
| 856 | 863 | ||
| 857 | /* no gap between data frames needed => use burst mode */ | 864 | /* no gap between data frames needed => use burst mode */ |
| 858 | if (!so->tx_gap) { | 865 | if (!so->tx_gap) { |
| 866 | /* enable echo timeout handling */ | ||
| 867 | hrtimer_start(&so->txtimer, ktime_set(ISOTP_ECHO_TIMEOUT, 0), | ||
| 868 | HRTIMER_MODE_REL_SOFT); | ||
| 859 | isotp_send_cframe(so); | 869 | isotp_send_cframe(so); |
| 860 | return; | 870 | return; |
| 861 | } | 871 | } |
| @@ -879,7 +889,7 @@ static enum hrtimer_restart isotp_tx_timer_handler(struct hrtimer *hrtimer) · 17 unmodified lines | |||
| 879 | /* start timeout for unlikely lost echo skb */ | 889 | /* start timeout for unlikely lost echo skb */ |
| 880 | hrtimer_set_expires(&so->txtimer, | 890 | hrtimer_set_expires(&so->txtimer, |
| 881 | ktime_add(ktime_get(), | 891 | ktime_add(ktime_get(), |
| 882 | ktime_set(2, 0))); | 892 | ktime_set(ISOTP_ECHO_TIMEOUT, 0))); |
| 883 | restart = HRTIMER_RESTART; | 893 | restart = HRTIMER_RESTART; |
| 884 | 894 | ||
| 885 | /* push out the next consecutive frame */ | 895 | /* push out the next consecutive frame */ |
| @@ -907,7 +917,8 @@ static enum hrtimer_restart isotp_tx_timer_handler(struct hrtimer *hrtimer) · 21 unmodified lines | |||
| 907 | break; | 917 | break; |
| 908 | 918 | ||
| 909 | default: | 919 | default: |
| 910 | WARN_ON_ONCE(1); | 920 | WARN_ONCE(1, "can-isotp: tx timer state %08X cfecho %08X\n", |
| 921 | so->tx.state, so->cfecho); | ||
| 911 | } | 922 | } |
| 912 | 923 | ||
| 913 | return restart; | 924 | return restart; |
| @@ -923,7 +934,7 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 9 unmodified lines | |||
| 923 | struct canfd_frame *cf; | 934 | struct canfd_frame *cf; |
| 924 | int ae = (so->opt.flags & CAN_ISOTP_EXTEND_ADDR) ? 1 : 0; | 935 | int ae = (so->opt.flags & CAN_ISOTP_EXTEND_ADDR) ? 1 : 0; |
| 925 | int wait_tx_done = (so->opt.flags & CAN_ISOTP_WAIT_TX_DONE) ? 1 : 0; | 936 | int wait_tx_done = (so->opt.flags & CAN_ISOTP_WAIT_TX_DONE) ? 1 : 0; |
| 926 | s64 hrtimer_sec = 0; | 937 | s64 hrtimer_sec = ISOTP_ECHO_TIMEOUT; |
| 927 | int off; | 938 | int off; |
| 928 | int err; | 939 | int err; |
| 929 | 940 | ||
| @@ -942,6 +953,8 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 12 unmodified lines | |||
| 942 | err = wait_event_interruptible(so->wait, so->tx.state == ISOTP_IDLE); | 953 | err = wait_event_interruptible(so->wait, so->tx.state == ISOTP_IDLE); |
| 943 | if (err) | 954 | if (err) |
| 944 | goto err_out; | 955 | goto err_out; |
| 956 | |||
| 957 | so->tx.state = ISOTP_SENDING; | ||
| 945 | } | 958 | } |
| 946 | 959 | ||
| 947 | if (!size || size > MAX_MSG_LENGTH) { | 960 | if (!size || size > MAX_MSG_LENGTH) { |
| @@ -986,6 +999,10 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 38 unmodified lines | |||
| 986 | cf = (struct canfd_frame *)skb->data; | 999 | cf = (struct canfd_frame *)skb->data; |
| 987 | skb_put_zero(skb, so->ll.mtu); | 1000 | skb_put_zero(skb, so->ll.mtu); |
| 988 | 1001 | ||
| 1002 | /* cfecho should have been zero'ed by init / former isotp_rcv_echo() */ | ||
| 1003 | if (so->cfecho) | ||
| 1004 | pr_notice_once("can-isotp: uninit cfecho %08X\n", so->cfecho); | ||
| 1005 | |||
| 989 | /* check for single frame transmission depending on TX_DL */ | 1006 | /* check for single frame transmission depending on TX_DL */ |
| 990 | if (size <= so->tx.ll_dl - SF_PCI_SZ4 - ae - off) { | 1007 | if (size <= so->tx.ll_dl - SF_PCI_SZ4 - ae - off) { |
| 991 | /* The message size generally fits into a SingleFrame - good. | 1008 | /* The message size generally fits into a SingleFrame - good. |
| @@ -1011,11 +1028,8 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 19 unmodified lines | |||
| 1011 | else | 1028 | else |
| 1012 | cf->data[ae] |= size; | 1029 | cf->data[ae] |= size; |
| 1013 | 1030 | ||
| 1014 | so->tx.state = ISOTP_IDLE; | 1031 | /* set CF echo tag for isotp_rcv_echo() (SF-mode) */ |
| 1015 | wake_up_interruptible(&so->wait); | 1032 | so->cfecho = *(u32 *)cf->data; |
| 1016 | |||
| 1017 | /* don't enable wait queue for a single frame transmission */ | ||
| 1018 | wait_tx_done = 0; | ||
| 1019 | } else { | 1033 | } else { |
| 1020 | /* send first frame */ | 1034 | /* send first frame */ |
| 1021 | 1035 | ||
| @@ -1031,31 +1045,23 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 9 unmodified lines | |||
| 1031 | /* disable wait for FCs due to activated block size */ | 1045 | /* disable wait for FCs due to activated block size */ |
| 1032 | so->txfc.bs = 0; | 1046 | so->txfc.bs = 0; |
| 1033 | 1047 | ||
| 1034 | /* cfecho should have been zero'ed by init */ | 1048 | /* set CF echo tag for isotp_rcv_echo() (CF-mode) */ |
| 1035 | if (so->cfecho) | ||
| 1036 | pr_notice_once("can-isotp: no fc cfecho %08X\n", | ||
| 1037 | so->cfecho); | ||
| 1038 | |||
| 1039 | /* set consecutive frame echo tag */ | ||
| 1040 | so->cfecho = *(u32 *)cf->data; | 1049 | so->cfecho = *(u32 *)cf->data; |
| 1041 | |||
| 1042 | /* switch directly to ISOTP_SENDING state */ | ||
| 1043 | so->tx.state = ISOTP_SENDING; | ||
| 1044 | |||
| 1045 | /* start timeout for unlikely lost echo skb */ | ||
| 1046 | hrtimer_sec = 2; | ||
| 1047 | } else { | 1050 | } else { |
| 1048 | /* standard flow control check */ | 1051 | /* standard flow control check */ |
| 1049 | so->tx.state = ISOTP_WAIT_FIRST_FC; | 1052 | so->tx.state = ISOTP_WAIT_FIRST_FC; |
| 1050 | 1053 | ||
| 1051 | /* start timeout for FC */ | 1054 | /* start timeout for FC */ |
| 1052 | hrtimer_sec = 1; | 1055 | hrtimer_sec = ISOTP_FC_TIMEOUT; |
| 1053 | } | ||
| 1054 | 1056 | ||
| 1055 | hrtimer_start(&so->txtimer, ktime_set(hrtimer_sec, 0), | 1057 | /* no CF echo tag for isotp_rcv_echo() (FF-mode) */ |
| 1056 | HRTIMER_MODE_REL_SOFT); | 1058 | so->cfecho = 0; |
| 1059 | } | ||
| 1057 | } | 1060 | } |
| 1058 | 1061 | ||
| 1062 | hrtimer_start(&so->txtimer, ktime_set(hrtimer_sec, 0), | ||
| 1063 | HRTIMER_MODE_REL_SOFT); | ||
| 1064 | |||
| 1059 | /* send the first or only CAN frame */ | 1065 | /* send the first or only CAN frame */ |
| 1060 | cf->flags = so->ll.tx_flags; | 1066 | cf->flags = so->ll.tx_flags; |
| 1061 | 1067 | ||
| @@ -1068,8 +1074,7 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 6 unmodified lines | |||
| 1068 | __func__, ERR_PTR(err)); | 1074 | __func__, ERR_PTR(err)); |
| 1069 | 1075 | ||
| 1070 | /* no transmission -> no timeout monitoring */ | 1076 | /* no transmission -> no timeout monitoring */ |
| 1071 | if (hrtimer_sec) | 1077 | hrtimer_cancel(&so->txtimer); |
| 1072 | hrtimer_cancel(&so->txtimer); | ||
| 1073 | 1078 | ||
| 1074 | /* reset consecutive frame echo tag */ | 1079 | /* reset consecutive frame echo tag */ |
| 1075 | so->cfecho = 0; | 1080 | so->cfecho = 0; |
| @@ -336,6 +336,9 @@ int j1939_send_one(struct j1939_priv *priv, struct sk_buff *skb) · 335 unmodified lines | |||
| 336 | /* re-claim the CAN_HDR from the SKB */ | 336 | /* re-claim the CAN_HDR from the SKB */ |
| 337 | cf = skb_push(skb, J1939_CAN_HDR); | 337 | cf = skb_push(skb, J1939_CAN_HDR); |
| 338 | 338 | ||
| 339 | /* initialize header structure */ | ||
| 340 | memset(cf, 0, J1939_CAN_HDR); | ||
| 341 | |||
| 339 | /* make it a full can frame again */ | 342 | /* make it a full can frame again */ |
| 340 | skb_put(skb, J1939_CAN_FTR + (8 - dlc)); | 343 | skb_put(skb, J1939_CAN_FTR + (8 - dlc)); |
| 341 | 344 | ||
| @@ -4134,23 +4134,25 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb, · 4133 unmodified lines | |||
| 4134 | int i = 0; | 4134 | int i = 0; |
| 4135 | int pos; | 4135 | int pos; |
| 4136 | 4136 | ||
| 4137 | if (list_skb && !list_skb->head_frag && skb_headlen(list_skb) && | 4137 | if ((skb_shinfo(head_skb)->gso_type & SKB_GSO_DODGY) && |
| 4138 | (skb_shinfo(head_skb)->gso_type & SKB_GSO_DODGY)) { | 4138 | mss != GSO_BY_FRAGS && mss != skb_headlen(head_skb)) { |
| 4139 | /* gso_size is untrusted, and we have a frag_list with a linear | 4139 | struct sk_buff *check_skb; |
| 4140 | * non head_frag head. | 4140 | |
| 4141 | * | 4141 | for (check_skb = list_skb; check_skb; check_skb = check_skb->next) { |
| 4142 | * (we assume checking the first list_skb member suffices; | 4142 | if (skb_headlen(check_skb) && !check_skb->head_frag) { |
| 4143 | * i.e if either of the list_skb members have non head_frag | 4143 | /* gso_size is untrusted, and we have a frag_list with |
| 4144 | * head, then the first one has too). | 4144 | * a linear non head_frag item. |
| 4145 | * | 4145 | * |
| 4146 | * If head_skb's headlen does not fit requested gso_size, it | 4146 | * If head_skb's headlen does not fit requested gso_size, |
| 4147 | * means that the frag_list members do NOT terminate on exact | 4147 | * it means that the frag_list members do NOT terminate |
| 4148 | * gso_size boundaries. Hence we cannot perform skb_frag_t page | 4148 | * on exact gso_size boundaries. Hence we cannot perform |
| 4149 | * sharing. Therefore we must fallback to copying the frag_list | 4149 | * skb_frag_t page sharing. Therefore we must fallback to |
| 4150 | * skbs; we do so by disabling SG. | 4150 | * copying the frag_list skbs; we do so by disabling SG. |
| 4151 | */ | 4151 | */ |
| 4152 | if (mss != GSO_BY_FRAGS && mss != skb_headlen(head_skb)) | 4152 | features &= ~NETIF_F_SG; |
| 4153 | features &= ~NETIF_F_SG; | 4153 | break; |
| 4154 | } | ||
| 4155 | } | ||
| 4154 | } | 4156 | } |
| 4155 | 4157 | ||
| 4156 | __skb_push(head_skb, doffset); | 4158 | __skb_push(head_skb, doffset); |
| @@ -803,16 +803,13 @@ static void sk_psock_link_destroy(struct sk_psock *psock) · 802 unmodified lines | |||
| 803 | } | 803 | } |
| 804 | } | 804 | } |
| 805 | 805 | ||
| 806 | void sk_psock_stop(struct sk_psock *psock, bool wait) | 806 | void sk_psock_stop(struct sk_psock *psock) |
| 807 | { | 807 | { |
| 808 | spin_lock_bh(&psock->ingress_lock); | 808 | spin_lock_bh(&psock->ingress_lock); |
| 809 | sk_psock_clear_state(psock, SK_PSOCK_TX_ENABLED); | 809 | sk_psock_clear_state(psock, SK_PSOCK_TX_ENABLED); |
| 810 | sk_psock_cork_free(psock); | 810 | sk_psock_cork_free(psock); |
| 811 | __sk_psock_zap_ingress(psock); | 811 | __sk_psock_zap_ingress(psock); |
| 812 | spin_unlock_bh(&psock->ingress_lock); | 812 | spin_unlock_bh(&psock->ingress_lock); |
| 813 | |||
| 814 | if (wait) | ||
| 815 | cancel_work_sync(&psock->work); | ||
| 816 | } | 813 | } |
| 817 | 814 | ||
| 818 | static void sk_psock_done_strp(struct sk_psock *psock); | 815 | 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 | |||
| 850 | sk_psock_stop_verdict(sk, psock); | 847 | sk_psock_stop_verdict(sk, psock); |
| 851 | write_unlock_bh(&sk->sk_callback_lock); | 848 | write_unlock_bh(&sk->sk_callback_lock); |
| 852 | 849 | ||
| 853 | sk_psock_stop(psock, false); | 850 | sk_psock_stop(psock); |
| 854 | 851 | ||
| 855 | INIT_RCU_WORK(&psock->rwork, sk_psock_destroy); | 852 | INIT_RCU_WORK(&psock->rwork, sk_psock_destroy); |
| 856 | queue_rcu_work(system_wq, &psock->rwork); | 853 | queue_rcu_work(system_wq, &psock->rwork); |
| @@ -1596,7 +1596,7 @@ void sock_map_destroy(struct sock *sk) · 1595 unmodified lines | |||
| 1596 | saved_destroy = psock->saved_destroy; | 1596 | saved_destroy = psock->saved_destroy; |
| 1597 | sock_map_remove_links(sk, psock); | 1597 | sock_map_remove_links(sk, psock); |
| 1598 | rcu_read_unlock(); | 1598 | rcu_read_unlock(); |
| 1599 | sk_psock_stop(psock, false); | 1599 | sk_psock_stop(psock); |
| 1600 | sk_psock_put(sk, psock); | 1600 | sk_psock_put(sk, psock); |
| 1601 | saved_destroy(sk); | 1601 | saved_destroy(sk); |
| 1602 | } | 1602 | } |
| @@ -1619,9 +1619,10 @@ void sock_map_close(struct sock *sk, long timeout) · 16 unmodified lines | |||
| 1619 | saved_close = psock->saved_close; | 1619 | saved_close = psock->saved_close; |
| 1620 | sock_map_remove_links(sk, psock); | 1620 | sock_map_remove_links(sk, psock); |
| 1621 | rcu_read_unlock(); | 1621 | rcu_read_unlock(); |
| 1622 | sk_psock_stop(psock, true); | 1622 | sk_psock_stop(psock); |
| 1623 | sk_psock_put(sk, psock); | ||
| 1624 | release_sock(sk); | 1623 | release_sock(sk); |
| 1624 | cancel_work_sync(&psock->work); | ||
| 1625 | sk_psock_put(sk, psock); | ||
| 1625 | saved_close(sk, timeout); | 1626 | saved_close(sk, timeout); |
| 1626 | } | 1627 | } |
| 1627 | EXPORT_SYMBOL_GPL(sock_map_close); | 1628 | EXPORT_SYMBOL_GPL(sock_map_close); |
| @@ -3647,7 +3647,7 @@ int do_tcp_setsockopt(struct sock *sk, int level, int optname, · 3646 unmodified lines | |||
| 3647 | case TCP_REPAIR_OPTIONS: | 3647 | case TCP_REPAIR_OPTIONS: |
| 3648 | if (!tp->repair) | 3648 | if (!tp->repair) |
| 3649 | err = -EINVAL; | 3649 | err = -EINVAL; |
| 3650 | else if (sk->sk_state == TCP_ESTABLISHED) | 3650 | else if (sk->sk_state == TCP_ESTABLISHED && !tp->bytes_sent) |
| 3651 | err = tcp_repair_options_est(sk, optval, optlen); | 3651 | err = tcp_repair_options_est(sk, optval, optlen); |
| 3652 | else | 3652 | else |
| 3653 | err = -EPERM; | 3653 | err = -EPERM; |
| @@ -278,7 +278,7 @@ static int tcp_bpf_send_verdict(struct sock *sk, struct sk_psock *psock, · 277 unmodified lines | |||
| 278 | { | 278 | { |
| 279 | bool cork = false, enospc = sk_msg_full(msg); | 279 | bool cork = false, enospc = sk_msg_full(msg); |
| 280 | struct sock *sk_redir; | 280 | struct sock *sk_redir; |
| 281 | u32 tosend, delta = 0; | 281 | u32 tosend, origsize, sent, delta = 0; |
| 282 | u32 eval = __SK_NONE; | 282 | u32 eval = __SK_NONE; |
| 283 | int ret; | 283 | int ret; |
| 284 | 284 | ||
| @@ -333,10 +333,12 @@ more_data: · 48 unmodified lines | |||
| 333 | cork = true; | 333 | cork = true; |
| 334 | psock->cork = NULL; | 334 | psock->cork = NULL; |
| 335 | } | 335 | } |
| 336 | sk_msg_return(sk, msg, msg->sg.size); | 336 | sk_msg_return(sk, msg, tosend); |
| 337 | release_sock(sk); | 337 | release_sock(sk); |
| 338 | 338 | ||
| 339 | origsize = msg->sg.size; | ||
| 339 | ret = tcp_bpf_sendmsg_redir(sk_redir, msg, tosend, flags); | 340 | ret = tcp_bpf_sendmsg_redir(sk_redir, msg, tosend, flags); |
| 341 | sent = origsize - msg->sg.size; | ||
| 340 | 342 | ||
| 341 | if (eval == __SK_REDIRECT) | 343 | if (eval == __SK_REDIRECT) |
| 342 | sock_put(sk_redir); | 344 | sock_put(sk_redir); |
| @@ -375,7 +377,7 @@ more_data: · 32 unmodified lines | |||
| 375 | msg->sg.data[msg->sg.start].page_link && | 377 | msg->sg.data[msg->sg.start].page_link && |
| 376 | msg->sg.data[msg->sg.start].length) { | 378 | msg->sg.data[msg->sg.start].length) { |
| 377 | if (eval == __SK_REDIRECT) | 379 | if (eval == __SK_REDIRECT) |
| 378 | sk_mem_charge(sk, msg->sg.size); | 380 | sk_mem_charge(sk, tosend - sent); |
| 379 | goto more_data; | 381 | goto more_data; |
| 380 | } | 382 | } |
| 381 | } | 383 | } |
| @@ -437,6 +437,7 @@ static void ip6addrlbl_putmsg(struct nlmsghdr *nlh, · 436 unmodified lines | |||
| 437 | { | 437 | { |
| 438 | struct ifaddrlblmsg *ifal = nlmsg_data(nlh); | 438 | struct ifaddrlblmsg *ifal = nlmsg_data(nlh); |
| 439 | ifal->ifal_family = AF_INET6; | 439 | ifal->ifal_family = AF_INET6; |
| 440 | ifal->__ifal_reserved = 0; | ||
| 440 | ifal->ifal_prefixlen = prefixlen; | 441 | ifal->ifal_prefixlen = prefixlen; |
| 441 | ifal->ifal_flags = 0; | 442 | ifal->ifal_flags = 0; |
| 442 | ifal->ifal_index = ifindex; | 443 | ifal->ifal_index = ifindex; |
| @@ -1439,8 +1439,10 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) · 1438 unmodified lines | |||
| 1439 | ieee80211_led_exit(local); | 1439 | ieee80211_led_exit(local); |
| 1440 | destroy_workqueue(local->workqueue); | 1440 | destroy_workqueue(local->workqueue); |
| 1441 | fail_workqueue: | 1441 | fail_workqueue: |
| 1442 | if (local->wiphy_ciphers_allocated) | 1442 | if (local->wiphy_ciphers_allocated) { |
| 1443 | kfree(local->hw.wiphy->cipher_suites); | 1443 | kfree(local->hw.wiphy->cipher_suites); |
| 1444 | local->wiphy_ciphers_allocated = false; | ||
| 1445 | } | ||
| 1444 | kfree(local->int_scan_req); | 1446 | kfree(local->int_scan_req); |
| 1445 | return result; | 1447 | return result; |
| 1446 | } | 1448 | } |
| @@ -1508,8 +1510,10 @@ void ieee80211_free_hw(struct ieee80211_hw *hw) · 61 unmodified lines | |||
| 1508 | mutex_destroy(&local->iflist_mtx); | 1510 | mutex_destroy(&local->iflist_mtx); |
| 1509 | mutex_destroy(&local->mtx); | 1511 | mutex_destroy(&local->mtx); |
| 1510 | 1512 | ||
| 1511 | if (local->wiphy_ciphers_allocated) | 1513 | if (local->wiphy_ciphers_allocated) { |
| 1512 | kfree(local->hw.wiphy->cipher_suites); | 1514 | kfree(local->hw.wiphy->cipher_suites); |
| 1515 | local->wiphy_ciphers_allocated = false; | ||
| 1516 | } | ||
| 1513 | 1517 | ||
| 1514 | idr_for_each(&local->ack_status_frames, | 1518 | idr_for_each(&local->ack_status_frames, |
| 1515 | ieee80211_free_ack_frame, NULL); | 1519 | ieee80211_free_ack_frame, NULL); |
| @@ -710,7 +710,7 @@ int mesh_path_send_to_gates(struct mesh_path *mpath) · 709 unmodified lines | |||
| 710 | void mesh_path_discard_frame(struct ieee80211_sub_if_data *sdata, | 710 | void mesh_path_discard_frame(struct ieee80211_sub_if_data *sdata, |
| 711 | struct sk_buff *skb) | 711 | struct sk_buff *skb) |
| 712 | { | 712 | { |
| 713 | kfree_skb(skb); | 713 | ieee80211_free_txskb(&sdata->local->hw, skb); |
| 714 | sdata->u.mesh.mshstats.dropped_frames_no_route++; | 714 | sdata->u.mesh.mshstats.dropped_frames_no_route++; |
| 715 | } | 715 | } |
| 716 | 716 | ||
| @@ -112,6 +112,9 @@ ieee80211_s1g_rx_twt_setup(struct ieee80211_sub_if_data *sdata, · 111 unmodified lines | |||
| 112 | goto out; | 112 | goto out; |
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | /* TWT Information not supported yet */ | ||
| 116 | twt->control |= IEEE80211_TWT_CONTROL_RX_DISABLED; | ||
| 117 | |||
| 115 | drv_add_twt_setup(sdata->local, sdata, &sta->sta, twt); | 118 | drv_add_twt_setup(sdata->local, sdata, &sta->sta, twt); |
| 116 | out: | 119 | out: |
| 117 | ieee80211_s1g_send_twt_setup(sdata, mgmt->sa, sdata->vif.addr, twt); | 120 | ieee80211_s1g_send_twt_setup(sdata, mgmt->sa, sdata->vif.addr, twt); |
| @@ -4418,6 +4418,11 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, · 4417 unmodified lines | |||
| 4418 | if (likely(!is_multicast_ether_addr(eth->h_dest))) | 4418 | if (likely(!is_multicast_ether_addr(eth->h_dest))) |
| 4419 | goto normal; | 4419 | goto normal; |
| 4420 | 4420 | ||
| 4421 | if (unlikely(!ieee80211_sdata_running(sdata))) { | ||
| 4422 | kfree_skb(skb); | ||
| 4423 | return NETDEV_TX_OK; | ||
| 4424 | } | ||
| 4425 | |||
| 4421 | if (unlikely(ieee80211_multicast_to_unicast(skb, dev))) { | 4426 | if (unlikely(ieee80211_multicast_to_unicast(skb, dev))) { |
| 4422 | struct sk_buff_head queue; | 4427 | struct sk_buff_head queue; |
| 4423 | 4428 | ||
| @@ -665,12 +665,14 @@ static __init int mctp_init(void) · 664 unmodified lines | |||
| 665 | 665 | ||
| 666 | rc = mctp_neigh_init(); | 666 | rc = mctp_neigh_init(); |
| 667 | if (rc) | 667 | if (rc) |
| 668 | goto err_unreg_proto; | 668 | goto err_unreg_routes; |
| 669 | 669 | ||
| 670 | mctp_device_init(); | 670 | mctp_device_init(); |
| 671 | 671 | ||
| 672 | return 0; | 672 | return 0; |
| 673 | 673 | ||
| 674 | err_unreg_routes: | ||
| 675 | mctp_routes_exit(); | ||
| 674 | err_unreg_proto: | 676 | err_unreg_proto: |
| 675 | proto_unregister(&mctp_proto); | 677 | proto_unregister(&mctp_proto); |
| 676 | err_unreg_sock: | 678 | err_unreg_sock: |
| @@ -1400,7 +1400,7 @@ int __init mctp_routes_init(void) · 1399 unmodified lines | |||
| 1400 | return register_pernet_subsys(&mctp_net_ops); | 1400 | return register_pernet_subsys(&mctp_net_ops); |
| 1401 | } | 1401 | } |
| 1402 | 1402 | ||
| 1403 | void __exit mctp_routes_exit(void) | 1403 | void mctp_routes_exit(void) |
| 1404 | { | 1404 | { |
| 1405 | unregister_pernet_subsys(&mctp_net_ops); | 1405 | unregister_pernet_subsys(&mctp_net_ops); |
| 1406 | rtnl_unregister(PF_MCTP, RTM_DELROUTE); | 1406 | rtnl_unregister(PF_MCTP, RTM_DELROUTE); |
| @@ -10090,7 +10090,8 @@ static void __net_exit nf_tables_exit_net(struct net *net) · 10089 unmodified lines | |||
| 10090 | struct nftables_pernet *nft_net = nft_pernet(net); | 10090 | struct nftables_pernet *nft_net = nft_pernet(net); |
| 10091 | 10091 | ||
| 10092 | mutex_lock(&nft_net->commit_mutex); | 10092 | mutex_lock(&nft_net->commit_mutex); |
| 10093 | if (!list_empty(&nft_net->commit_list)) | 10093 | if (!list_empty(&nft_net->commit_list) || |
| 10094 | !list_empty(&nft_net->module_list)) | ||
| 10094 | __nf_tables_abort(net, NFNL_ABORT_NONE); | 10095 | __nf_tables_abort(net, NFNL_ABORT_NONE); |
| 10095 | __nft_release_tables(net); | 10096 | __nft_release_tables(net); |
| 10096 | mutex_unlock(&nft_net->commit_mutex); | 10097 | mutex_unlock(&nft_net->commit_mutex); |
| @@ -294,6 +294,7 @@ replay: · 293 unmodified lines | |||
| 294 | nfnl_lock(subsys_id); | 294 | nfnl_lock(subsys_id); |
| 295 | if (nfnl_dereference_protected(subsys_id) != ss || | 295 | if (nfnl_dereference_protected(subsys_id) != ss || |
| 296 | nfnetlink_find_client(type, ss) != nc) { | 296 | nfnetlink_find_client(type, ss) != nc) { |
| 297 | nfnl_unlock(subsys_id); | ||
| 297 | err = -EAGAIN; | 298 | err = -EAGAIN; |
| 298 | break; | 299 | break; |
| 299 | } | 300 | } |
| @@ -384,6 +384,7 @@ static int sctp_prsctp_prune_unsent(struct sctp_association *asoc, · 383 unmodified lines | |||
| 384 | { | 384 | { |
| 385 | struct sctp_outq *q = &asoc->outqueue; | 385 | struct sctp_outq *q = &asoc->outqueue; |
| 386 | struct sctp_chunk *chk, *temp; | 386 | struct sctp_chunk *chk, *temp; |
| 387 | struct sctp_stream_out *sout; | ||
| 387 | 388 | ||
| 388 | q->sched->unsched_all(&asoc->stream); | 389 | q->sched->unsched_all(&asoc->stream); |
| 389 | 390 | ||
| @@ -398,12 +399,14 @@ static int sctp_prsctp_prune_unsent(struct sctp_association *asoc, · 8 unmodified lines | |||
| 398 | sctp_sched_dequeue_common(q, chk); | 399 | sctp_sched_dequeue_common(q, chk); |
| 399 | asoc->sent_cnt_removable--; | 400 | asoc->sent_cnt_removable--; |
| 400 | asoc->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++; | 401 | asoc->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++; |
| 401 | if (chk->sinfo.sinfo_stream < asoc->stream.outcnt) { | ||
| 402 | struct sctp_stream_out *streamout = | ||
| 403 | SCTP_SO(&asoc->stream, chk->sinfo.sinfo_stream); | ||
| 404 | 402 | ||
| 405 | streamout->ext->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++; | 403 | sout = SCTP_SO(&asoc->stream, chk->sinfo.sinfo_stream); |
| 406 | } | 404 | sout->ext->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++; |
| 405 | |||
| 406 | /* clear out_curr if all frag chunks are pruned */ | ||
| 407 | if (asoc->stream.out_curr == sout && | ||
| 408 | list_is_last(&chk->frag_list, &chk->msg->chunks)) | ||
| 409 | asoc->stream.out_curr = NULL; | ||
| 407 | 410 | ||
| 408 | msg_len -= chk->skb->truesize + sizeof(struct sctp_chunk); | 411 | msg_len -= chk->skb->truesize + sizeof(struct sctp_chunk); |
| 409 | sctp_chunk_free(chk); | 412 | sctp_chunk_free(chk); |
| @@ -880,7 +880,7 @@ static int tipc_nl_compat_name_table_dump_header(struct tipc_nl_compat_msg *msg) · 879 unmodified lines | |||
| 880 | }; | 880 | }; |
| 881 | 881 | ||
| 882 | ntq = (struct tipc_name_table_query *)TLV_DATA(msg->req); | 882 | ntq = (struct tipc_name_table_query *)TLV_DATA(msg->req); |
| 883 | if (TLV_GET_DATA_LEN(msg->req) < sizeof(struct tipc_name_table_query)) | 883 | if (TLV_GET_DATA_LEN(msg->req) < (int)sizeof(struct tipc_name_table_query)) |
| 884 | return -EINVAL; | 884 | return -EINVAL; |
| 885 | 885 | ||
| 886 | depth = ntohl(ntq->depth); | 886 | depth = ntohl(ntq->depth); |
| @@ -1084,6 +1084,8 @@ MODULE_FIRMWARE("regulatory.db"); · 1083 unmodified lines | |||
| 1084 | 1084 | ||
| 1085 | static int query_regdb_file(const char *alpha2) | 1085 | static int query_regdb_file(const char *alpha2) |
| 1086 | { | 1086 | { |
| 1087 | int err; | ||
| 1088 | |||
| 1087 | ASSERT_RTNL(); | 1089 | ASSERT_RTNL(); |
| 1088 | 1090 | ||
| 1089 | if (regdb) | 1091 | if (regdb) |
| @@ -1093,9 +1095,13 @@ static int query_regdb_file(const char *alpha2) · 3 unmodified lines | |||
| 1093 | if (!alpha2) | 1095 | if (!alpha2) |
| 1094 | return -ENOMEM; | 1096 | return -ENOMEM; |
| 1095 | 1097 | ||
| 1096 | return request_firmware_nowait(THIS_MODULE, true, "regulatory.db", | 1098 | err = request_firmware_nowait(THIS_MODULE, true, "regulatory.db", |
| 1097 | ®_pdev->dev, GFP_KERNEL, | 1099 | ®_pdev->dev, GFP_KERNEL, |
| 1098 | (void *)alpha2, regdb_fw_cb); | 1100 | (void *)alpha2, regdb_fw_cb); |
| 1101 | if (err) | ||
| 1102 | kfree(alpha2); | ||
| 1103 | |||
| 1104 | return err; | ||
| 1099 | } | 1105 | } |
| 1100 | 1106 | ||
| 1101 | int reg_reload_regdb(void) | 1107 | int reg_reload_regdb(void) |
| @@ -1674,7 +1674,9 @@ cfg80211_update_known_bss(struct cfg80211_registered_device *rdev, · 1673 unmodified lines | |||
| 1674 | if (old == rcu_access_pointer(known->pub.ies)) | 1674 | if (old == rcu_access_pointer(known->pub.ies)) |
| 1675 | rcu_assign_pointer(known->pub.ies, new->pub.beacon_ies); | 1675 | rcu_assign_pointer(known->pub.ies, new->pub.beacon_ies); |
| 1676 | 1676 | ||
| 1677 | cfg80211_update_hidden_bsses(known, new->pub.beacon_ies, old); | 1677 | cfg80211_update_hidden_bsses(known, |
| 1678 | rcu_access_pointer(new->pub.beacon_ies), | ||
| 1679 | old); | ||
| 1678 | 1680 | ||
| 1679 | if (old) | 1681 | if (old) |
| 1680 | kfree_rcu((struct cfg80211_bss_ies *)old, rcu_head); | 1682 | kfree_rcu((struct cfg80211_bss_ies *)old, rcu_head); |
| @@ -1557,10 +1557,12 @@ static u32 cfg80211_calculate_bitrate_eht(struct rate_info *rate) · 1556 unmodified lines | |||
| 1557 | tmp = result; | 1557 | tmp = result; |
| 1558 | tmp *= SCALE; | 1558 | tmp *= SCALE; |
| 1559 | do_div(tmp, mcs_divisors[rate->mcs]); | 1559 | do_div(tmp, mcs_divisors[rate->mcs]); |
| 1560 | result = tmp; | ||
| 1561 | 1560 | ||
| 1562 | /* and take NSS */ | 1561 | /* and take NSS */ |
| 1563 | result = (result * rate->nss) / 8; | 1562 | tmp *= rate->nss; |
| 1563 | do_div(tmp, 8); | ||
| 1564 | |||
| 1565 | result = tmp; | ||
| 1564 | 1566 | ||
| 1565 | return result / 10000; | 1567 | return result / 10000; |
| 1566 | } | 1568 | } |
| @@ -25,7 +25,7 @@ icc) · 24 unmodified lines | |||
| 25 | ;; | 25 | ;; |
| 26 | llvm) | 26 | llvm) |
| 27 | if [ "$SRCARCH" = s390 ]; then | 27 | if [ "$SRCARCH" = s390 ]; then |
| 28 | echo 14.0.0 | 28 | echo 15.0.0 |
| 29 | else | 29 | else |
| 30 | echo 11.0.0 | 30 | echo 11.0.0 |
| 31 | fi | 31 | fi |
| @@ -402,8 +402,10 @@ int pxa2xx_ac97_hw_probe(struct platform_device *dev) · 401 unmodified lines | |||
| 402 | goto err_clk2; | 402 | goto err_clk2; |
| 403 | 403 | ||
| 404 | irq = platform_get_irq(dev, 0); | 404 | irq = platform_get_irq(dev, 0); |
| 405 | if (!irq) | 405 | if (irq < 0) { |
| 406 | ret = irq; | ||
| 406 | goto err_irq; | 407 | goto err_irq; |
| 408 | } | ||
| 407 | 409 | ||
| 408 | ret = request_irq(irq, pxa2xx_ac97_irq, 0, "AC97", NULL); | 410 | ret = request_irq(irq, pxa2xx_ac97_irq, 0, "AC97", NULL); |
| 409 | if (ret < 0) | 411 | if (ret < 0) |
| @@ -9,6 +9,7 @@ · 8 unmodified lines | |||
| 9 | #include <linux/slab.h> | 9 | #include <linux/slab.h> |
| 10 | #include <linux/mm.h> | 10 | #include <linux/mm.h> |
| 11 | #include <linux/dma-mapping.h> | 11 | #include <linux/dma-mapping.h> |
| 12 | #include <linux/dma-map-ops.h> | ||
| 12 | #include <linux/genalloc.h> | 13 | #include <linux/genalloc.h> |
| 13 | #include <linux/highmem.h> | 14 | #include <linux/highmem.h> |
| 14 | #include <linux/vmalloc.h> | 15 | #include <linux/vmalloc.h> |
| @@ -543,17 +544,17 @@ static void *snd_dma_noncontig_alloc(struct snd_dma_buffer *dmab, size_t size) · 528 unmodified lines | |||
| 543 | 544 | ||
| 544 | sgt = dma_alloc_noncontiguous(dmab->dev.dev, size, dmab->dev.dir, | 545 | sgt = dma_alloc_noncontiguous(dmab->dev.dev, size, dmab->dev.dir, |
| 545 | DEFAULT_GFP, 0); | 546 | DEFAULT_GFP, 0); |
| 546 | if (!sgt) { | ||
| 547 | #ifdef CONFIG_SND_DMA_SGBUF | 547 | #ifdef CONFIG_SND_DMA_SGBUF |
| 548 | if (!sgt && !get_dma_ops(dmab->dev.dev)) { | ||
| 548 | if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_WC_SG) | 549 | if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_WC_SG) |
| 549 | dmab->dev.type = SNDRV_DMA_TYPE_DEV_WC_SG_FALLBACK; | 550 | dmab->dev.type = SNDRV_DMA_TYPE_DEV_WC_SG_FALLBACK; |
| 550 | else | 551 | else |
| 551 | dmab->dev.type = SNDRV_DMA_TYPE_DEV_SG_FALLBACK; | 552 | dmab->dev.type = SNDRV_DMA_TYPE_DEV_SG_FALLBACK; |
| 552 | return snd_dma_sg_fallback_alloc(dmab, size); | 553 | return snd_dma_sg_fallback_alloc(dmab, size); |
| 553 | #else | ||
| 554 | return NULL; | ||
| 555 | #endif | ||
| 556 | } | 554 | } |
| 555 | #endif | ||
| 556 | if (!sgt) | ||
| 557 | return NULL; | ||
| 557 | 558 | ||
| 558 | dmab->dev.need_sync = dma_need_sync(dmab->dev.dev, | 559 | dmab->dev.need_sync = dma_need_sync(dmab->dev.dev, |
| 559 | sg_dma_address(sgt->sgl)); | 560 | sg_dma_address(sgt->sgl)); |
| @@ -857,7 +858,7 @@ static const struct snd_malloc_ops snd_dma_noncoherent_ops = { · 297 unmodified lines | |||
| 857 | /* | 858 | /* |
| 858 | * Entry points | 859 | * Entry points |
| 859 | */ | 860 | */ |
| 860 | static const struct snd_malloc_ops *dma_ops[] = { | 861 | static const struct snd_malloc_ops *snd_dma_ops[] = { |
| 861 | [SNDRV_DMA_TYPE_CONTINUOUS] = &snd_dma_continuous_ops, | 862 | [SNDRV_DMA_TYPE_CONTINUOUS] = &snd_dma_continuous_ops, |
| 862 | [SNDRV_DMA_TYPE_VMALLOC] = &snd_dma_vmalloc_ops, | 863 | [SNDRV_DMA_TYPE_VMALLOC] = &snd_dma_vmalloc_ops, |
| 863 | #ifdef CONFIG_HAS_DMA | 864 | #ifdef CONFIG_HAS_DMA |
| @@ -883,7 +884,7 @@ static const struct snd_malloc_ops *snd_dma_get_ops(struct snd_dma_buffer *dmab) · 19 unmodified lines | |||
| 883 | if (WARN_ON_ONCE(!dmab)) | 884 | if (WARN_ON_ONCE(!dmab)) |
| 884 | return NULL; | 885 | return NULL; |
| 885 | if (WARN_ON_ONCE(dmab->dev.type <= SNDRV_DMA_TYPE_UNKNOWN || | 886 | if (WARN_ON_ONCE(dmab->dev.type <= SNDRV_DMA_TYPE_UNKNOWN || |
| 886 | dmab->dev.type >= ARRAY_SIZE(dma_ops))) | 887 | dmab->dev.type >= ARRAY_SIZE(snd_dma_ops))) |
| 887 | return NULL; | 888 | return NULL; |
| 888 | return dma_ops[dmab->dev.type]; | 889 | return snd_dma_ops[dmab->dev.type]; |
| 889 | } | 890 | } |
| @@ -346,8 +346,10 @@ static int add_widget_node(struct kobject *parent, hda_nid_t nid, · 345 unmodified lines | |||
| 346 | return -ENOMEM; | 346 | return -ENOMEM; |
| 347 | kobject_init(kobj, &widget_ktype); | 347 | kobject_init(kobj, &widget_ktype); |
| 348 | err = kobject_add(kobj, parent, "%02x", nid); | 348 | err = kobject_add(kobj, parent, "%02x", nid); |
| 349 | if (err < 0) | 349 | if (err < 0) { |
| 350 | kobject_put(kobj); | ||
| 350 | return err; | 351 | return err; |
| 352 | } | ||
| 351 | err = sysfs_create_group(kobj, group); | 353 | err = sysfs_create_group(kobj, group); |
| 352 | if (err < 0) { | 354 | if (err < 0) { |
| 353 | kobject_put(kobj); | 355 | kobject_put(kobj); |
| @@ -485,8 +485,8 @@ static int intel_ml_lctl_set_power(struct azx *chip, int state) · 484 unmodified lines | |||
| 485 | int timeout; | 485 | int timeout; |
| 486 | 486 | ||
| 487 | /* | 487 | /* |
| 488 | * the codecs are sharing the first link setting by default | 488 | * Changes to LCTL.SCF are only needed for the first multi-link dealing |
| 489 | * If other links are enabled for stream, they need similar fix | 489 | * with external codecs |
| 490 | */ | 490 | */ |
| 491 | val = readl(bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL); | 491 | val = readl(bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL); |
| 492 | val &= ~AZX_ML_LCTL_SPA; | 492 | val &= ~AZX_ML_LCTL_SPA; |
| @@ -513,7 +513,7 @@ static void intel_init_lctl(struct azx *chip) · 20 unmodified lines | |||
| 513 | 513 | ||
| 514 | /* 0. check lctl register value is correct or not */ | 514 | /* 0. check lctl register value is correct or not */ |
| 515 | val = readl(bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL); | 515 | val = readl(bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL); |
| 516 | /* if SCF is already set, let's use it */ | 516 | /* only perform additional configurations if the SCF is initially based on 6MHz */ |
| 517 | if ((val & AZX_ML_LCTL_SCF) != 0) | 517 | if ((val & AZX_ML_LCTL_SCF) != 0) |
| 518 | return; | 518 | return; |
| 519 | 519 | ||
| @@ -531,7 +531,7 @@ static void intel_init_lctl(struct azx *chip) · 11 unmodified lines | |||
| 531 | if (ret) | 531 | if (ret) |
| 532 | goto set_spa; | 532 | goto set_spa; |
| 533 | 533 | ||
| 534 | /* 2. update SCF to select a properly audio clock*/ | 534 | /* 2. update SCF to select an audio clock different from 6MHz */ |
| 535 | val &= ~AZX_ML_LCTL_SCF; | 535 | val &= ~AZX_ML_LCTL_SCF; |
| 536 | val |= intel_get_lctl_scf(chip); | 536 | val |= intel_get_lctl_scf(chip); |
| 537 | writel(val, bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL); | 537 | writel(val, bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL); |
| @@ -2711,6 +2711,9 @@ static const struct pci_device_id azx_ids[] = { · 2173 unmodified lines | |||
| 2711 | { PCI_DEVICE(0x1002, 0xab28), | 2711 | { PCI_DEVICE(0x1002, 0xab28), |
| 2712 | .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS | | 2712 | .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS | |
| 2713 | AZX_DCAPS_PM_RUNTIME }, | 2713 | AZX_DCAPS_PM_RUNTIME }, |
| 2714 | { PCI_DEVICE(0x1002, 0xab30), | ||
| 2715 | .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS | | ||
| 2716 | AZX_DCAPS_PM_RUNTIME }, | ||
| 2714 | { PCI_DEVICE(0x1002, 0xab38), | 2717 | { PCI_DEVICE(0x1002, 0xab38), |
| 2715 | .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS | | 2718 | .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS | |
| 2716 | AZX_DCAPS_PM_RUNTIME }, | 2719 | AZX_DCAPS_PM_RUNTIME }, |
| @@ -1306,6 +1306,7 @@ static const struct snd_pci_quirk ca0132_quirks[] = { · 1305 unmodified lines | |||
| 1306 | SND_PCI_QUIRK(0x1458, 0xA026, "Gigabyte G1.Sniper Z97", QUIRK_R3DI), | 1306 | SND_PCI_QUIRK(0x1458, 0xA026, "Gigabyte G1.Sniper Z97", QUIRK_R3DI), |
| 1307 | SND_PCI_QUIRK(0x1458, 0xA036, "Gigabyte GA-Z170X-Gaming 7", QUIRK_R3DI), | 1307 | SND_PCI_QUIRK(0x1458, 0xA036, "Gigabyte GA-Z170X-Gaming 7", QUIRK_R3DI), |
| 1308 | SND_PCI_QUIRK(0x3842, 0x1038, "EVGA X99 Classified", QUIRK_R3DI), | 1308 | SND_PCI_QUIRK(0x3842, 0x1038, "EVGA X99 Classified", QUIRK_R3DI), |
| 1309 | SND_PCI_QUIRK(0x3842, 0x1055, "EVGA Z390 DARK", QUIRK_R3DI), | ||
| 1309 | SND_PCI_QUIRK(0x1102, 0x0013, "Recon3D", QUIRK_R3D), | 1310 | SND_PCI_QUIRK(0x1102, 0x0013, "Recon3D", QUIRK_R3D), |
| 1310 | SND_PCI_QUIRK(0x1102, 0x0018, "Recon3D", QUIRK_R3D), | 1311 | SND_PCI_QUIRK(0x1102, 0x0018, "Recon3D", QUIRK_R3D), |
| 1311 | SND_PCI_QUIRK(0x1102, 0x0051, "Sound Blaster AE-5", QUIRK_AE5), | 1312 | SND_PCI_QUIRK(0x1102, 0x0051, "Sound Blaster AE-5", QUIRK_AE5), |
| @@ -9404,6 +9404,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { · 9403 unmodified lines | |||
| 9404 | SND_PCI_QUIRK(0x1043, 0x1e8e, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA401), | 9404 | SND_PCI_QUIRK(0x1043, 0x1e8e, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA401), |
| 9405 | SND_PCI_QUIRK(0x1043, 0x1c52, "ASUS Zephyrus G15 2022", ALC289_FIXUP_ASUS_GA401), | 9405 | SND_PCI_QUIRK(0x1043, 0x1c52, "ASUS Zephyrus G15 2022", ALC289_FIXUP_ASUS_GA401), |
| 9406 | SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_GA401), | 9406 | SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_GA401), |
| 9407 | SND_PCI_QUIRK(0x1043, 0x1f12, "ASUS UM5302", ALC287_FIXUP_CS35L41_I2C_2), | ||
| 9407 | SND_PCI_QUIRK(0x1043, 0x1f92, "ASUS ROG Flow X16", ALC289_FIXUP_ASUS_GA401), | 9408 | SND_PCI_QUIRK(0x1043, 0x1f92, "ASUS ROG Flow X16", ALC289_FIXUP_ASUS_GA401), |
| 9408 | SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2), | 9409 | SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2), |
| 9409 | SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC), | 9410 | SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC), |
| @@ -9608,6 +9609,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { · 198 unmodified lines | |||
| 9608 | SND_PCI_QUIRK(0x17aa, 0x511f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), | 9609 | SND_PCI_QUIRK(0x17aa, 0x511f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), |
| 9609 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), | 9610 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), |
| 9610 | SND_PCI_QUIRK(0x1849, 0x1233, "ASRock NUC Box 1100", ALC233_FIXUP_NO_AUDIO_JACK), | 9611 | SND_PCI_QUIRK(0x1849, 0x1233, "ASRock NUC Box 1100", ALC233_FIXUP_NO_AUDIO_JACK), |
| 9612 | SND_PCI_QUIRK(0x1849, 0xa233, "Positivo Master C6300", ALC269_FIXUP_HEADSET_MIC), | ||
| 9611 | SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS), | 9613 | SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS), |
| 9612 | SND_PCI_QUIRK(0x19e5, 0x320f, "Huawei WRT-WX9 ", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE), | 9614 | SND_PCI_QUIRK(0x19e5, 0x320f, "Huawei WRT-WX9 ", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE), |
| 9613 | SND_PCI_QUIRK(0x1b35, 0x1235, "CZC B20", ALC269_FIXUP_CZC_B20), | 9615 | SND_PCI_QUIRK(0x1b35, 0x1235, "CZC B20", ALC269_FIXUP_CZC_B20), |
| @@ -24,7 +24,6 @@ · 23 unmodified lines | |||
| 24 | #include "adau-utils.h" | 24 | #include "adau-utils.h" |
| 25 | 25 | ||
| 26 | struct adau1372 { | 26 | struct adau1372 { |
| 27 | struct clk *clk; | ||
| 28 | struct regmap *regmap; | 27 | struct regmap *regmap; |
| 29 | void (*switch_mode)(struct device *dev); | 28 | void (*switch_mode)(struct device *dev); |
| 30 | bool use_pll; | 29 | bool use_pll; |
| @@ -206,10 +205,10 @@ static const struct snd_kcontrol_new adau1372_controls[] = { · 175 unmodified lines | |||
| 206 | 2, 1, 0, adau1372_pga_boost_tlv), | 205 | 2, 1, 0, adau1372_pga_boost_tlv), |
| 207 | SOC_SINGLE_TLV("PGA 3 Boost Capture Volume", ADAU1372_REG_PGA_BOOST, | 206 | SOC_SINGLE_TLV("PGA 3 Boost Capture Volume", ADAU1372_REG_PGA_BOOST, |
| 208 | 3, 1, 0, adau1372_pga_boost_tlv), | 207 | 3, 1, 0, adau1372_pga_boost_tlv), |
| 209 | SOC_SINGLE("PGA 0 Capture Switch", ADAU1372_REG_PGA_CTRL(0), 7, 1, 1), | 208 | SOC_SINGLE("PGA 0 Capture Switch", ADAU1372_REG_PGA_CTRL(0), 7, 1, 0), |
| 210 | SOC_SINGLE("PGA 1 Capture Switch", ADAU1372_REG_PGA_CTRL(1), 7, 1, 1), | 209 | SOC_SINGLE("PGA 1 Capture Switch", ADAU1372_REG_PGA_CTRL(1), 7, 1, 0), |
| 211 | SOC_SINGLE("PGA 2 Capture Switch", ADAU1372_REG_PGA_CTRL(2), 7, 1, 1), | 210 | SOC_SINGLE("PGA 2 Capture Switch", ADAU1372_REG_PGA_CTRL(2), 7, 1, 0), |
| 212 | SOC_SINGLE("PGA 3 Capture Switch", ADAU1372_REG_PGA_CTRL(3), 7, 1, 1), | 211 | SOC_SINGLE("PGA 3 Capture Switch", ADAU1372_REG_PGA_CTRL(3), 7, 1, 0), |
| 213 | 212 | ||
| 214 | SOC_SINGLE_TLV("DAC 0 Playback Volume", ADAU1372_REG_DAC_VOL(0), | 213 | SOC_SINGLE_TLV("DAC 0 Playback Volume", ADAU1372_REG_DAC_VOL(0), |
| 215 | 0, 0xff, 1, adau1372_digital_tlv), | 214 | 0, 0xff, 1, adau1372_digital_tlv), |
| @@ -369,10 +368,10 @@ static const struct snd_soc_dapm_widget adau1372_dapm_widgets[] = { · 153 unmodified lines | |||
| 369 | SND_SOC_DAPM_SUPPLY("MICBIAS0", ADAU1372_REG_MICBIAS, 4, 0, NULL, 0), | 368 | SND_SOC_DAPM_SUPPLY("MICBIAS0", ADAU1372_REG_MICBIAS, 4, 0, NULL, 0), |
| 370 | SND_SOC_DAPM_SUPPLY("MICBIAS1", ADAU1372_REG_MICBIAS, 5, 0, NULL, 0), | 369 | SND_SOC_DAPM_SUPPLY("MICBIAS1", ADAU1372_REG_MICBIAS, 5, 0, NULL, 0), |
| 371 | 370 | ||
| 372 | SND_SOC_DAPM_PGA("PGA0", ADAU1372_REG_PGA_CTRL(0), 6, 0, NULL, 0), | 371 | SND_SOC_DAPM_PGA("PGA0", ADAU1372_REG_PGA_CTRL(0), 6, 1, NULL, 0), |
| 373 | SND_SOC_DAPM_PGA("PGA1", ADAU1372_REG_PGA_CTRL(1), 6, 0, NULL, 0), | 372 | SND_SOC_DAPM_PGA("PGA1", ADAU1372_REG_PGA_CTRL(1), 6, 1, NULL, 0), |
| 374 | SND_SOC_DAPM_PGA("PGA2", ADAU1372_REG_PGA_CTRL(2), 6, 0, NULL, 0), | 373 | SND_SOC_DAPM_PGA("PGA2", ADAU1372_REG_PGA_CTRL(2), 6, 1, NULL, 0), |
| 375 | SND_SOC_DAPM_PGA("PGA3", ADAU1372_REG_PGA_CTRL(3), 6, 0, NULL, 0), | 374 | SND_SOC_DAPM_PGA("PGA3", ADAU1372_REG_PGA_CTRL(3), 6, 1, NULL, 0), |
| 376 | SND_SOC_DAPM_ADC("ADC0", NULL, ADAU1372_REG_ADC_CTRL2, 0, 0), | 375 | SND_SOC_DAPM_ADC("ADC0", NULL, ADAU1372_REG_ADC_CTRL2, 0, 0), |
| 377 | SND_SOC_DAPM_ADC("ADC1", NULL, ADAU1372_REG_ADC_CTRL2, 1, 0), | 376 | SND_SOC_DAPM_ADC("ADC1", NULL, ADAU1372_REG_ADC_CTRL2, 1, 0), |
| 378 | SND_SOC_DAPM_ADC("ADC2", NULL, ADAU1372_REG_ADC_CTRL3, 0, 0), | 377 | SND_SOC_DAPM_ADC("ADC2", NULL, ADAU1372_REG_ADC_CTRL3, 0, 0), |
| @@ -662,6 +661,7 @@ static int adau1372_hw_params(struct snd_pcm_substream *substream, · 283 unmodified lines | |||
| 662 | case 16: | 661 | case 16: |
| 663 | sai1 = ADAU1372_SAI1_BCLKRATE; | 662 | sai1 = ADAU1372_SAI1_BCLKRATE; |
| 664 | break; | 663 | break; |
| 664 | case 24: | ||
| 665 | case 32: | 665 | case 32: |
| 666 | sai1 = 0; | 666 | sai1 = 0; |
| 667 | break; | 667 | break; |
| @@ -699,6 +699,7 @@ static int adau1372_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, · 31 unmodified lines | |||
| 699 | case 16: | 699 | case 16: |
| 700 | sai1 = ADAU1372_SAI1_BCLK_TDMC; | 700 | sai1 = ADAU1372_SAI1_BCLK_TDMC; |
| 701 | break; | 701 | break; |
| 702 | case 24: | ||
| 702 | case 32: | 703 | case 32: |
| 703 | sai1 = 0; | 704 | sai1 = 0; |
| 704 | break; | 705 | break; |
| @@ -869,7 +870,9 @@ static const struct snd_soc_dai_ops adau1372_dai_ops = { · 164 unmodified lines | |||
| 869 | .startup = adau1372_startup, | 870 | .startup = adau1372_startup, |
| 870 | }; | 871 | }; |
| 871 | 872 | ||
| 872 | #define ADAU1372_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE) | 873 | #define ADAU1372_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ |
| 874 | SNDRV_PCM_FMTBIT_S24_LE | \ | ||
| 875 | SNDRV_PCM_FMTBIT_S32_LE) | ||
| 873 | 876 | ||
| 874 | static struct snd_soc_dai_driver adau1372_dai_driver = { | 877 | static struct snd_soc_dai_driver adau1372_dai_driver = { |
| 875 | .name = "adau1372", | 878 | .name = "adau1372", |
| @@ -924,9 +927,9 @@ int adau1372_probe(struct device *dev, struct regmap *regmap, · 48 unmodified lines | |||
| 924 | if (!adau1372) | 927 | if (!adau1372) |
| 925 | return -ENOMEM; | 928 | return -ENOMEM; |
| 926 | 929 | ||
| 927 | adau1372->clk = devm_clk_get(dev, "mclk"); | 930 | adau1372->mclk = devm_clk_get(dev, "mclk"); |
| 928 | if (IS_ERR(adau1372->clk)) | 931 | if (IS_ERR(adau1372->mclk)) |
| 929 | return PTR_ERR(adau1372->clk); | 932 | return PTR_ERR(adau1372->mclk); |
| 930 | 933 | ||
| 931 | adau1372->pd_gpio = devm_gpiod_get_optional(dev, "powerdown", GPIOD_OUT_HIGH); | 934 | adau1372->pd_gpio = devm_gpiod_get_optional(dev, "powerdown", GPIOD_OUT_HIGH); |
| 932 | if (IS_ERR(adau1372->pd_gpio)) | 935 | if (IS_ERR(adau1372->pd_gpio)) |
| @@ -946,7 +949,7 @@ int adau1372_probe(struct device *dev, struct regmap *regmap, · 13 unmodified lines | |||
| 946 | * 12.288MHz. Automatically choose a valid configuration from the | 949 | * 12.288MHz. Automatically choose a valid configuration from the |
| 947 | * external clock. | 950 | * external clock. |
| 948 | */ | 951 | */ |
| 949 | rate = clk_get_rate(adau1372->clk); | 952 | rate = clk_get_rate(adau1372->mclk); |
| 950 | 953 | ||
| 951 | switch (rate) { | 954 | switch (rate) { |
| 952 | case 12288000: | 955 | case 12288000: |
| @@ -742,6 +742,18 @@ get_alias_quirk(struct usb_device *dev, unsigned int id) · 741 unmodified lines | |||
| 742 | return NULL; | 742 | return NULL; |
| 743 | } | 743 | } |
| 744 | 744 | ||
| 745 | /* register card if we reach to the last interface or to the specified | ||
| 746 | * one given via option | ||
| 747 | */ | ||
| 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 | |||
| 745 | /* | 757 | /* |
| 746 | * probe the active usb device | 758 | * probe the active usb device |
| 747 | * | 759 | * |
| @@ -880,15 +892,9 @@ static int usb_audio_probe(struct usb_interface *intf, · 132 unmodified lines | |||
| 880 | chip->need_delayed_register = false; /* clear again */ | 892 | chip->need_delayed_register = false; /* clear again */ |
| 881 | } | 893 | } |
| 882 | 894 | ||
| 883 | /* register card if we reach to the last interface or to the specified | 895 | err = try_to_register_card(chip, ifnum); |
| 884 | * one given via option | 896 | if (err < 0) |
| 885 | */ | 897 | goto __error_no_register; |
| 886 | if (check_delayed_register_option(chip) == ifnum || | ||
| 887 | usb_interface_claimed(usb_ifnum_to_if(dev, chip->last_iface))) { | ||
| 888 | err = snd_card_register(chip->card); | ||
| 889 | if (err < 0) | ||
| 890 | goto __error; | ||
| 891 | } | ||
| 892 | 898 | ||
| 893 | if (chip->quirk_flags & QUIRK_FLAG_SHARE_MEDIA_DEVICE) { | 899 | if (chip->quirk_flags & QUIRK_FLAG_SHARE_MEDIA_DEVICE) { |
| 894 | /* don't want to fail when snd_media_device_create() fails */ | 900 | /* don't want to fail when snd_media_device_create() fails */ |
| @@ -907,6 +913,11 @@ static int usb_audio_probe(struct usb_interface *intf, · 12 unmodified lines | |||
| 907 | return 0; | 913 | return 0; |
| 908 | 914 | ||
| 909 | __error: | 915 | __error: |
| 916 | /* in the case of error in secondary interface, still try to register */ | ||
| 917 | if (chip) | ||
| 918 | try_to_register_card(chip, ifnum); | ||
| 919 | |||
| 920 | __error_no_register: | ||
| 910 | if (chip) { | 921 | if (chip) { |
| 911 | /* chip->active is inside the chip->card object, | 922 | /* chip->active is inside the chip->card object, |
| 912 | * decrement before memory is possibly returned. | 923 | * decrement before memory is possibly returned. |
| @@ -931,7 +931,8 @@ void snd_usb_endpoint_close(struct snd_usb_audio *chip, · 930 unmodified lines | |||
| 931 | usb_audio_dbg(chip, "Closing EP 0x%x (count %d)\n", | 931 | usb_audio_dbg(chip, "Closing EP 0x%x (count %d)\n", |
| 932 | ep->ep_num, ep->opened); | 932 | ep->ep_num, ep->opened); |
| 933 | 933 | ||
| 934 | if (!--ep->iface_ref->opened) | 934 | if (!--ep->iface_ref->opened && |
| 935 | !(chip->quirk_flags & QUIRK_FLAG_IFACE_SKIP_CLOSE)) | ||
| 935 | endpoint_set_interface(chip, ep, false); | 936 | endpoint_set_interface(chip, ep, false); |
| 936 | 937 | ||
| 937 | if (!--ep->opened) { | 938 | if (!--ep->opened) { |
| @@ -2049,6 +2049,10 @@ YAMAHA_DEVICE(0x7010, "UB99"), · 2048 unmodified lines | |||
| 2049 | } | 2049 | } |
| 2050 | } | 2050 | } |
| 2051 | }, | 2051 | }, |
| 2052 | { | ||
| 2053 | /* M-Audio Micro */ | ||
| 2054 | USB_DEVICE_VENDOR_SPEC(0x0763, 0x201a), | ||
| 2055 | }, | ||
| 2052 | { | 2056 | { |
| 2053 | USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030), | 2057 | USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030), |
| 2054 | .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { | 2058 | .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { |
| @@ -376,7 +376,8 @@ static int create_auto_midi_quirk(struct snd_usb_audio *chip, · 375 unmodified lines | |||
| 376 | 376 | ||
| 377 | static int create_autodetect_quirk(struct snd_usb_audio *chip, | 377 | static int create_autodetect_quirk(struct snd_usb_audio *chip, |
| 378 | struct usb_interface *iface, | 378 | struct usb_interface *iface, |
| 379 | struct usb_driver *driver) | 379 | struct usb_driver *driver, |
| 380 | const struct snd_usb_audio_quirk *quirk) | ||
| 380 | { | 381 | { |
| 381 | int err; | 382 | int err; |
| 382 | 383 | ||
| @@ -386,45 +387,6 @@ static int create_autodetect_quirk(struct snd_usb_audio *chip, · 3 unmodified lines | |||
| 386 | return err; | 387 | return err; |
| 387 | } | 388 | } |
| 388 | 389 | ||
| 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 | |||
| 428 | /* | 390 | /* |
| 429 | * Create a stream for an Edirol UA-700/UA-25/UA-4FX interface. | 391 | * Create a stream for an Edirol UA-700/UA-25/UA-4FX interface. |
| 430 | * The only way to detect the sample rate is by looking at wMaxPacketSize. | 392 | * The only way to detect the sample rate is by looking at wMaxPacketSize. |
| @@ -554,7 +516,7 @@ int snd_usb_create_quirk(struct snd_usb_audio *chip, · 123 unmodified lines | |||
| 554 | static const quirk_func_t quirk_funcs[] = { | 516 | static const quirk_func_t quirk_funcs[] = { |
| 555 | [QUIRK_IGNORE_INTERFACE] = ignore_interface_quirk, | 517 | [QUIRK_IGNORE_INTERFACE] = ignore_interface_quirk, |
| 556 | [QUIRK_COMPOSITE] = create_composite_quirk, | 518 | [QUIRK_COMPOSITE] = create_composite_quirk, |
| 557 | [QUIRK_AUTODETECT] = create_autodetect_quirks, | 519 | [QUIRK_AUTODETECT] = create_autodetect_quirk, |
| 558 | [QUIRK_MIDI_STANDARD_INTERFACE] = create_any_midi_quirk, | 520 | [QUIRK_MIDI_STANDARD_INTERFACE] = create_any_midi_quirk, |
| 559 | [QUIRK_MIDI_FIXED_ENDPOINT] = create_any_midi_quirk, | 521 | [QUIRK_MIDI_FIXED_ENDPOINT] = create_any_midi_quirk, |
| 560 | [QUIRK_MIDI_YAMAHA] = create_any_midi_quirk, | 522 | [QUIRK_MIDI_YAMAHA] = create_any_midi_quirk, |
| @@ -1913,6 +1875,7 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip, · 1352 unmodified lines | |||
| 1913 | /* XMOS based USB DACs */ | 1875 | /* XMOS based USB DACs */ |
| 1914 | switch (chip->usb_id) { | 1876 | switch (chip->usb_id) { |
| 1915 | case USB_ID(0x1511, 0x0037): /* AURALiC VEGA */ | 1877 | case USB_ID(0x1511, 0x0037): /* AURALiC VEGA */ |
| 1878 | case USB_ID(0x21ed, 0xd75a): /* Accuphase DAC-60 option card */ | ||
| 1916 | case USB_ID(0x2522, 0x0012): /* LH Labs VI DAC Infinity */ | 1879 | case USB_ID(0x2522, 0x0012): /* LH Labs VI DAC Infinity */ |
| 1917 | case USB_ID(0x2772, 0x0230): /* Pro-Ject Pre Box S2 Digital */ | 1880 | case USB_ID(0x2772, 0x0230): /* Pro-Ject Pre Box S2 Digital */ |
| 1918 | if (fp->altsetting == 2) | 1881 | if (fp->altsetting == 2) |
| @@ -2185,6 +2148,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { · 266 unmodified lines | |||
| 2185 | QUIRK_FLAG_GENERIC_IMPLICIT_FB), | 2148 | QUIRK_FLAG_GENERIC_IMPLICIT_FB), |
| 2186 | DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */ | 2149 | DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */ |
| 2187 | QUIRK_FLAG_GENERIC_IMPLICIT_FB), | 2150 | QUIRK_FLAG_GENERIC_IMPLICIT_FB), |
| 2151 | DEVICE_FLG(0x0525, 0xa4ad, /* Hamedal C20 usb camero */ | ||
| 2152 | QUIRK_FLAG_IFACE_SKIP_CLOSE), | ||
| 2188 | 2153 | ||
| 2189 | /* Vendor matches */ | 2154 | /* Vendor matches */ |
| 2190 | VENDOR_FLG(0x045e, /* MS Lifecam */ | 2155 | VENDOR_FLG(0x045e, /* MS Lifecam */ |
| @@ -170,6 +170,8 @@ extern bool snd_usb_skip_validation; · 169 unmodified lines | |||
| 170 | * Apply the generic implicit feedback sync mode (same as implicit_fb=1 option) | 170 | * Apply the generic implicit feedback sync mode (same as implicit_fb=1 option) |
| 171 | * QUIRK_FLAG_SKIP_IMPLICIT_FB | 171 | * QUIRK_FLAG_SKIP_IMPLICIT_FB |
| 172 | * Don't apply implicit feedback sync mode | 172 | * Don't apply implicit feedback sync mode |
| 173 | * QUIRK_FLAG_IFACE_SKIP_CLOSE | ||
| 174 | * Don't closed interface during setting sample rate | ||
| 173 | */ | 175 | */ |
| 174 | 176 | ||
| 175 | #define QUIRK_FLAG_GET_SAMPLE_RATE (1U << 0) | 177 | #define QUIRK_FLAG_GET_SAMPLE_RATE (1U << 0) |
| @@ -191,5 +193,6 @@ extern bool snd_usb_skip_validation; · 15 unmodified lines | |||
| 191 | #define QUIRK_FLAG_SET_IFACE_FIRST (1U << 16) | 193 | #define QUIRK_FLAG_SET_IFACE_FIRST (1U << 16) |
| 192 | #define QUIRK_FLAG_GENERIC_IMPLICIT_FB (1U << 17) | 194 | #define QUIRK_FLAG_GENERIC_IMPLICIT_FB (1U << 17) |
| 193 | #define QUIRK_FLAG_SKIP_IMPLICIT_FB (1U << 18) | 195 | #define QUIRK_FLAG_SKIP_IMPLICIT_FB (1U << 18) |
| 196 | #define QUIRK_FLAG_IFACE_SKIP_CLOSE (1U << 19) | ||
| 194 | 197 | ||
| 195 | #endif /* __USBAUDIO_H */ | 198 | #endif /* __USBAUDIO_H */ |
| @@ -300,6 +300,9 @@ int do_pin_any(int argc, char **argv, int (*get_fd)(int *, char ***)) · 299 unmodified lines | |||
| 300 | int err; | 300 | int err; |
| 301 | int fd; | 301 | int fd; |
| 302 | 302 | ||
| 303 | if (!REQ_ARGS(3)) | ||
| 304 | return -EINVAL; | ||
| 305 | |||
| 303 | fd = get_fd(&argc, &argv); | 306 | fd = get_fd(&argc, &argv); |
| 304 | if (fd < 0) | 307 | if (fd < 0) |
| 305 | return fd; | 308 | return fd; |
| @@ -20,6 +20,7 @@ · 19 unmodified lines | |||
| 20 | #define _UAPI_LINUX_IN_H | 20 | #define _UAPI_LINUX_IN_H |
| 21 | 21 | ||
| 22 | #include <linux/types.h> | 22 | #include <linux/types.h> |
| 23 | #include <linux/stddef.h> | ||
| 23 | #include <linux/libc-compat.h> | 24 | #include <linux/libc-compat.h> |
| 24 | #include <linux/socket.h> | 25 | #include <linux/socket.h> |
| 25 | 26 | ||
| @@ -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 | ||
| @@ -41,11 +41,14 @@ VMX_EXIT_REASONS = { · 40 unmodified lines | |||
| 41 | 'EXCEPTION_NMI': 0, | 41 | 'EXCEPTION_NMI': 0, |
| 42 | 'EXTERNAL_INTERRUPT': 1, | 42 | 'EXTERNAL_INTERRUPT': 1, |
| 43 | 'TRIPLE_FAULT': 2, | 43 | 'TRIPLE_FAULT': 2, |
| 44 | 'PENDING_INTERRUPT': 7, | 44 | 'INIT_SIGNAL': 3, |
| 45 | 'SIPI_SIGNAL': 4, | ||
| 46 | 'INTERRUPT_WINDOW': 7, | ||
| 45 | 'NMI_WINDOW': 8, | 47 | 'NMI_WINDOW': 8, |
| 46 | 'TASK_SWITCH': 9, | 48 | 'TASK_SWITCH': 9, |
| 47 | 'CPUID': 10, | 49 | 'CPUID': 10, |
| 48 | 'HLT': 12, | 50 | 'HLT': 12, |
| 51 | 'INVD': 13, | ||
| 49 | 'INVLPG': 14, | 52 | 'INVLPG': 14, |
| 50 | 'RDPMC': 15, | 53 | 'RDPMC': 15, |
| 51 | 'RDTSC': 16, | 54 | 'RDTSC': 16, |
| @@ -65,26 +68,48 @@ VMX_EXIT_REASONS = { · 13 unmodified lines | |||
| 65 | 'MSR_READ': 31, | 68 | 'MSR_READ': 31, |
| 66 | 'MSR_WRITE': 32, | 69 | 'MSR_WRITE': 32, |
| 67 | 'INVALID_STATE': 33, | 70 | 'INVALID_STATE': 33, |
| 71 | 'MSR_LOAD_FAIL': 34, | ||
| 68 | 'MWAIT_INSTRUCTION': 36, | 72 | 'MWAIT_INSTRUCTION': 36, |
| 73 | 'MONITOR_TRAP_FLAG': 37, | ||
| 69 | 'MONITOR_INSTRUCTION': 39, | 74 | 'MONITOR_INSTRUCTION': 39, |
| 70 | 'PAUSE_INSTRUCTION': 40, | 75 | 'PAUSE_INSTRUCTION': 40, |
| 71 | 'MCE_DURING_VMENTRY': 41, | 76 | 'MCE_DURING_VMENTRY': 41, |
| 72 | 'TPR_BELOW_THRESHOLD': 43, | 77 | 'TPR_BELOW_THRESHOLD': 43, |
| 73 | 'APIC_ACCESS': 44, | 78 | 'APIC_ACCESS': 44, |
| 79 | 'EOI_INDUCED': 45, | ||
| 80 | 'GDTR_IDTR': 46, | ||
| 81 | 'LDTR_TR': 47, | ||
| 74 | 'EPT_VIOLATION': 48, | 82 | 'EPT_VIOLATION': 48, |
| 75 | 'EPT_MISCONFIG': 49, | 83 | 'EPT_MISCONFIG': 49, |
| 84 | 'INVEPT': 50, | ||
| 85 | 'RDTSCP': 51, | ||
| 86 | 'PREEMPTION_TIMER': 52, | ||
| 87 | 'INVVPID': 53, | ||
| 76 | 'WBINVD': 54, | 88 | 'WBINVD': 54, |
| 77 | 'XSETBV': 55, | 89 | 'XSETBV': 55, |
| 78 | 'APIC_WRITE': 56, | 90 | 'APIC_WRITE': 56, |
| 91 | 'RDRAND': 57, | ||
| 79 | 'INVPCID': 58, | 92 | 'INVPCID': 58, |
| 93 | 'VMFUNC': 59, | ||
| 94 | 'ENCLS': 60, | ||
| 95 | 'RDSEED': 61, | ||
| 96 | 'PML_FULL': 62, | ||
| 97 | 'XSAVES': 63, | ||
| 98 | 'XRSTORS': 64, | ||
| 99 | 'UMWAIT': 67, | ||
| 100 | 'TPAUSE': 68, | ||
| 101 | 'BUS_LOCK': 74, | ||
| 102 | 'NOTIFY': 75, | ||
| 80 | } | 103 | } |
| 81 | 104 | ||
| 82 | SVM_EXIT_REASONS = { | 105 | SVM_EXIT_REASONS = { |
| 83 | 'READ_CR0': 0x000, | 106 | 'READ_CR0': 0x000, |
| 107 | 'READ_CR2': 0x002, | ||
| 84 | 'READ_CR3': 0x003, | 108 | 'READ_CR3': 0x003, |
| 85 | 'READ_CR4': 0x004, | 109 | 'READ_CR4': 0x004, |
| 86 | 'READ_CR8': 0x008, | 110 | 'READ_CR8': 0x008, |
| 87 | 'WRITE_CR0': 0x010, | 111 | 'WRITE_CR0': 0x010, |
| 112 | 'WRITE_CR2': 0x012, | ||
| 88 | 'WRITE_CR3': 0x013, | 113 | 'WRITE_CR3': 0x013, |
| 89 | 'WRITE_CR4': 0x014, | 114 | 'WRITE_CR4': 0x014, |
| 90 | 'WRITE_CR8': 0x018, | 115 | 'WRITE_CR8': 0x018, |
| @@ -105,6 +130,7 @@ SVM_EXIT_REASONS = { · 14 unmodified lines | |||
| 105 | 'WRITE_DR6': 0x036, | 130 | 'WRITE_DR6': 0x036, |
| 106 | 'WRITE_DR7': 0x037, | 131 | 'WRITE_DR7': 0x037, |
| 107 | 'EXCP_BASE': 0x040, | 132 | 'EXCP_BASE': 0x040, |
| 133 | 'LAST_EXCP': 0x05f, | ||
| 108 | 'INTR': 0x060, | 134 | 'INTR': 0x060, |
| 109 | 'NMI': 0x061, | 135 | 'NMI': 0x061, |
| 110 | 'SMI': 0x062, | 136 | 'SMI': 0x062, |
| @@ -151,21 +177,45 @@ SVM_EXIT_REASONS = { · 40 unmodified lines | |||
| 151 | 'MWAIT': 0x08b, | 177 | 'MWAIT': 0x08b, |
| 152 | 'MWAIT_COND': 0x08c, | 178 | 'MWAIT_COND': 0x08c, |
| 153 | 'XSETBV': 0x08d, | 179 | 'XSETBV': 0x08d, |
| 180 | 'RDPRU': 0x08e, | ||
| 181 | 'EFER_WRITE_TRAP': 0x08f, | ||
| 182 | 'CR0_WRITE_TRAP': 0x090, | ||
| 183 | 'CR1_WRITE_TRAP': 0x091, | ||
| 184 | 'CR2_WRITE_TRAP': 0x092, | ||
| 185 | 'CR3_WRITE_TRAP': 0x093, | ||
| 186 | 'CR4_WRITE_TRAP': 0x094, | ||
| 187 | 'CR5_WRITE_TRAP': 0x095, | ||
| 188 | 'CR6_WRITE_TRAP': 0x096, | ||
| 189 | 'CR7_WRITE_TRAP': 0x097, | ||
| 190 | 'CR8_WRITE_TRAP': 0x098, | ||
| 191 | 'CR9_WRITE_TRAP': 0x099, | ||
| 192 | 'CR10_WRITE_TRAP': 0x09a, | ||
| 193 | 'CR11_WRITE_TRAP': 0x09b, | ||
| 194 | 'CR12_WRITE_TRAP': 0x09c, | ||
| 195 | 'CR13_WRITE_TRAP': 0x09d, | ||
| 196 | 'CR14_WRITE_TRAP': 0x09e, | ||
| 197 | 'CR15_WRITE_TRAP': 0x09f, | ||
| 198 | 'INVPCID': 0x0a2, | ||
| 154 | 'NPF': 0x400, | 199 | 'NPF': 0x400, |
| 200 | 'AVIC_INCOMPLETE_IPI': 0x401, | ||
| 201 | 'AVIC_UNACCELERATED_ACCESS': 0x402, | ||
| 202 | 'VMGEXIT': 0x403, | ||
| 155 | } | 203 | } |
| 156 | 204 | ||
| 157 | # EC definition of HSR (from arch/arm64/include/asm/kvm_arm.h) | 205 | # EC definition of HSR (from arch/arm64/include/asm/esr.h) |
| 158 | AARCH64_EXIT_REASONS = { | 206 | AARCH64_EXIT_REASONS = { |
| 159 | 'UNKNOWN': 0x00, | 207 | 'UNKNOWN': 0x00, |
| 160 | 'WFI': 0x01, | 208 | 'WFx': 0x01, |
| 161 | 'CP15_32': 0x03, | 209 | 'CP15_32': 0x03, |
| 162 | 'CP15_64': 0x04, | 210 | 'CP15_64': 0x04, |
| 163 | 'CP14_MR': 0x05, | 211 | 'CP14_MR': 0x05, |
| 164 | 'CP14_LS': 0x06, | 212 | 'CP14_LS': 0x06, |
| 165 | 'FP_ASIMD': 0x07, | 213 | 'FP_ASIMD': 0x07, |
| 166 | 'CP10_ID': 0x08, | 214 | 'CP10_ID': 0x08, |
| 215 | 'PAC': 0x09, | ||
| 167 | 'CP14_64': 0x0C, | 216 | 'CP14_64': 0x0C, |
| 168 | 'ILL_ISS': 0x0E, | 217 | 'BTI': 0x0D, |
| 218 | 'ILL': 0x0E, | ||
| 169 | 'SVC32': 0x11, | 219 | 'SVC32': 0x11, |
| 170 | 'HVC32': 0x12, | 220 | 'HVC32': 0x12, |
| 171 | 'SMC32': 0x13, | 221 | 'SMC32': 0x13, |
| @@ -173,21 +223,26 @@ AARCH64_EXIT_REASONS = { · 1 unmodified line | |||
| 173 | 'HVC64': 0x16, | 223 | 'HVC64': 0x16, |
| 174 | 'SMC64': 0x17, | 224 | 'SMC64': 0x17, |
| 175 | 'SYS64': 0x18, | 225 | 'SYS64': 0x18, |
| 176 | 'IABT': 0x20, | 226 | 'SVE': 0x19, |
| 177 | 'IABT_HYP': 0x21, | 227 | 'ERET': 0x1A, |
| 228 | 'FPAC': 0x1C, | ||
| 229 | 'SME': 0x1D, | ||
| 230 | 'IMP_DEF': 0x1F, | ||
| 231 | 'IABT_LOW': 0x20, | ||
| 232 | 'IABT_CUR': 0x21, | ||
| 178 | 'PC_ALIGN': 0x22, | 233 | 'PC_ALIGN': 0x22, |
| 179 | 'DABT': 0x24, | 234 | 'DABT_LOW': 0x24, |
| 180 | 'DABT_HYP': 0x25, | 235 | 'DABT_CUR': 0x25, |
| 181 | 'SP_ALIGN': 0x26, | 236 | 'SP_ALIGN': 0x26, |
| 182 | 'FP_EXC32': 0x28, | 237 | 'FP_EXC32': 0x28, |
| 183 | 'FP_EXC64': 0x2C, | 238 | 'FP_EXC64': 0x2C, |
| 184 | 'SERROR': 0x2F, | 239 | 'SERROR': 0x2F, |
| 185 | 'BREAKPT': 0x30, | 240 | 'BREAKPT_LOW': 0x30, |
| 186 | 'BREAKPT_HYP': 0x31, | 241 | 'BREAKPT_CUR': 0x31, |
| 187 | 'SOFTSTP': 0x32, | 242 | 'SOFTSTP_LOW': 0x32, |
| 188 | 'SOFTSTP_HYP': 0x33, | 243 | 'SOFTSTP_CUR': 0x33, |
| 189 | 'WATCHPT': 0x34, | 244 | 'WATCHPT_LOW': 0x34, |
| 190 | 'WATCHPT_HYP': 0x35, | 245 | 'WATCHPT_CUR': 0x35, |
| 191 | 'BKPT32': 0x38, | 246 | 'BKPT32': 0x38, |
| 192 | 'VECTOR32': 0x3A, | 247 | 'VECTOR32': 0x3A, |
| 193 | 'BRK64': 0x3C, | 248 | 'BRK64': 0x3C, |
| @@ -220,6 +275,19 @@ USERSPACE_EXIT_REASONS = { · 26 unmodified lines | |||
| 220 | 'S390_TSCH': 22, | 275 | 'S390_TSCH': 22, |
| 221 | 'EPR': 23, | 276 | 'EPR': 23, |
| 222 | 'SYSTEM_EVENT': 24, | 277 | 'SYSTEM_EVENT': 24, |
| 278 | 'S390_STSI': 25, | ||
| 279 | 'IOAPIC_EOI': 26, | ||
| 280 | 'HYPERV': 27, | ||
| 281 | 'ARM_NISV': 28, | ||
| 282 | 'X86_RDMSR': 29, | ||
| 283 | 'X86_WRMSR': 30, | ||
| 284 | 'DIRTY_RING_FULL': 31, | ||
| 285 | 'AP_RESET_HOLD': 32, | ||
| 286 | 'X86_BUS_LOCK': 33, | ||
| 287 | 'XEN': 34, | ||
| 288 | 'RISCV_SBI': 35, | ||
| 289 | 'RISCV_CSR': 36, | ||
| 290 | 'NOTIFY': 37, | ||
| 223 | } | 291 | } |
| 224 | 292 | ||
| 225 | IOCTL_NUMBERS = { | 293 | IOCTL_NUMBERS = { |
| @@ -1756,7 +1824,7 @@ def assign_globals(): · 1530 unmodified lines | |||
| 1756 | 1824 | ||
| 1757 | debugfs = '' | 1825 | debugfs = '' |
| 1758 | for line in open('/proc/mounts'): | 1826 | for line in open('/proc/mounts'): |
| 1759 | if line.split(' ')[0] == 'debugfs': | 1827 | if line.split(' ')[2] == 'debugfs': |
| 1760 | debugfs = line.split(' ')[1] | 1828 | debugfs = line.split(' ')[1] |
| 1761 | break | 1829 | break |
| 1762 | if debugfs == '': | 1830 | if debugfs == '': |
| @@ -4,6 +4,7 @@ PERF-GUI-VARS · 3 unmodified lines | |||
| 4 | PERF-VERSION-FILE | 4 | PERF-VERSION-FILE |
| 5 | FEATURE-DUMP | 5 | FEATURE-DUMP |
| 6 | perf | 6 | perf |
| 7 | !include/perf/ | ||
| 7 | perf-read-vdso32 | 8 | perf-read-vdso32 |
| 8 | perf-read-vdsox32 | 9 | perf-read-vdsox32 |
| 9 | perf-help | 10 | perf-help |
| @@ -13,7 +13,10 @@ fi · 12 unmodified lines | |||
| 13 | 13 | ||
| 14 | # skip the test if the hardware doesn't support branch stack sampling | 14 | # skip the test if the hardware doesn't support branch stack sampling |
| 15 | # and if the architecture doesn't support filter types: any,save_type,u | 15 | # 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 | ||
| 17 | 20 | ||
| 18 | TMPDIR=$(mktemp -d /tmp/__perf_test.program.XXXXX) | 21 | TMPDIR=$(mktemp -d /tmp/__perf_test.program.XXXXX) |
| 19 | 22 | ||
| @@ -102,8 +102,10 @@ parse_branch_stack(const struct option *opt, const char *str, int unset) · 101 unmodified lines | |||
| 102 | /* | 102 | /* |
| 103 | * cannot set it twice, -b + --branch-filter for instance | 103 | * cannot set it twice, -b + --branch-filter for instance |
| 104 | */ | 104 | */ |
| 105 | if (*mode) | 105 | if (*mode) { |
| 106 | pr_err("Error: Can't use --branch-any (-b) with --branch-filter (-j).\n"); | ||
| 106 | return -1; | 107 | return -1; |
| 108 | } | ||
| 107 | 109 | ||
| 108 | return parse_branch_str(str, mode); | 110 | return parse_branch_str(str, mode); |
| 109 | } | 111 | } |
| @@ -273,7 +273,7 @@ static void new_line_csv(struct perf_stat_config *config, void *ctx) · 272 unmodified lines | |||
| 273 | 273 | ||
| 274 | fputc('\n', os->fh); | 274 | fputc('\n', os->fh); |
| 275 | if (os->prefix) | 275 | if (os->prefix) |
| 276 | fprintf(os->fh, "%s%s", os->prefix, config->csv_sep); | 276 | fprintf(os->fh, "%s", os->prefix); |
| 277 | aggr_printout(config, os->evsel, os->id, os->nr); | 277 | aggr_printout(config, os->evsel, os->id, os->nr); |
| 278 | for (i = 0; i < os->nfields; i++) | 278 | for (i = 0; i < os->nfields; i++) |
| 279 | fputs(config->csv_sep, os->fh); | 279 | fputs(config->csv_sep, os->fh); |
| @@ -559,7 +559,7 @@ static void printout(struct perf_stat_config *config, struct aggr_cpu_id id, int · 279 unmodified lines | |||
| 559 | [AGGR_CORE] = 2, | 559 | [AGGR_CORE] = 2, |
| 560 | [AGGR_THREAD] = 1, | 560 | [AGGR_THREAD] = 1, |
| 561 | [AGGR_UNSET] = 0, | 561 | [AGGR_UNSET] = 0, |
| 562 | [AGGR_NODE] = 0, | 562 | [AGGR_NODE] = 1, |
| 563 | }; | 563 | }; |
| 564 | 564 | ||
| 565 | pm = config->metric_only ? print_metric_only_csv : print_metric_csv; | 565 | pm = config->metric_only ? print_metric_only_csv : print_metric_csv; |
| @@ -1124,6 +1124,7 @@ static int aggr_header_lens[] = { · 558 unmodified lines | |||
| 1124 | [AGGR_SOCKET] = 12, | 1124 | [AGGR_SOCKET] = 12, |
| 1125 | [AGGR_NONE] = 6, | 1125 | [AGGR_NONE] = 6, |
| 1126 | [AGGR_THREAD] = 24, | 1126 | [AGGR_THREAD] = 24, |
| 1127 | [AGGR_NODE] = 6, | ||
| 1127 | [AGGR_GLOBAL] = 0, | 1128 | [AGGR_GLOBAL] = 0, |
| 1128 | }; | 1129 | }; |
| 1129 | 1130 | ||
| @@ -1133,6 +1134,7 @@ static const char *aggr_header_csv[] = { · 3 unmodified lines | |||
| 1133 | [AGGR_SOCKET] = "socket,cpus", | 1134 | [AGGR_SOCKET] = "socket,cpus", |
| 1134 | [AGGR_NONE] = "cpu,", | 1135 | [AGGR_NONE] = "cpu,", |
| 1135 | [AGGR_THREAD] = "comm-pid,", | 1136 | [AGGR_THREAD] = "comm-pid,", |
| 1137 | [AGGR_NODE] = "node,", | ||
| 1136 | [AGGR_GLOBAL] = "" | 1138 | [AGGR_GLOBAL] = "" |
| 1137 | }; | 1139 | }; |
| 1138 | 1140 | ||
| @@ -1,4 +1,5 @@ | |||
| 1 | # SPDX-License-Identifier: GPL-2.0-only | 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | generated/bit-length.h | ||
| 2 | generated/map-shift.h | 3 | generated/map-shift.h |
| 3 | idr.c | 4 | idr.c |
| 4 | idr-test | 5 | idr-test |
| @@ -18,9 +18,14 @@ endif · 17 unmodified lines | |||
| 18 | ifeq ($(BUILD), 32) | 18 | ifeq ($(BUILD), 32) |
| 19 | CFLAGS += -m32 | 19 | CFLAGS += -m32 |
| 20 | LDFLAGS += -m32 | 20 | LDFLAGS += -m32 |
| 21 | LONG_BIT := 32 | ||
| 21 | endif | 22 | endif |
| 22 | 23 | ||
| 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) | ||
| 24 | 29 | ||
| 25 | main: $(OFILES) | 30 | main: $(OFILES) |
| 26 | 31 | ||
| @@ -34,11 +39,11 @@ maple: $(CORE_OFILES) · 7 unmodified lines | |||
| 34 | multiorder: multiorder.o $(CORE_OFILES) | 39 | multiorder: multiorder.o $(CORE_OFILES) |
| 35 | 40 | ||
| 36 | clean: | 41 | 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 |
| 38 | 43 | ||
| 39 | vpath %.c ../../lib | 44 | vpath %.c ../../lib |
| 40 | 45 | ||
| 41 | $(OFILES): Makefile *.h */*.h generated/map-shift.h \ | 46 | $(OFILES): Makefile *.h */*.h generated/map-shift.h generated/bit-length.h \ |
| 42 | ../../include/linux/*.h \ | 47 | ../../include/linux/*.h \ |
| 43 | ../../include/asm/*.h \ | 48 | ../../include/asm/*.h \ |
| 44 | ../../../include/linux/xarray.h \ | 49 | ../../../include/linux/xarray.h \ |
| @@ -61,3 +66,11 @@ generated/map-shift.h: · 16 unmodified lines | |||
| 61 | echo "#define XA_CHUNK_SHIFT $(SHIFT)" > \ | 66 | echo "#define XA_CHUNK_SHIFT $(SHIFT)" > \ |
| 62 | generated/map-shift.h; \ | 67 | generated/map-shift.h; \ |
| 63 | fi | 68 | 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: ; | ||
| @@ -1,2 +1,2 @@ | |||
| 1 | #include "bit-length.h" | ||
| 1 | #define CONFIG_XARRAY_MULTI 1 | 2 | #define CONFIG_XARRAY_MULTI 1 |
| 2 | #define CONFIG_64BIT 1 | ||
| @@ -129,6 +129,10 @@ void kmem_cache_free_bulk(struct kmem_cache *cachep, size_t size, void **list) · 128 unmodified lines | |||
| 129 | pthread_mutex_unlock(&cachep->lock); | 129 | pthread_mutex_unlock(&cachep->lock); |
| 130 | } | 130 | } |
| 131 | 131 | ||
| 132 | void kmem_cache_shrink(struct kmem_cache *cachep) | ||
| 133 | { | ||
| 134 | } | ||
| 135 | |||
| 132 | int kmem_cache_alloc_bulk(struct kmem_cache *cachep, gfp_t gfp, size_t size, | 136 | int kmem_cache_alloc_bulk(struct kmem_cache *cachep, gfp_t gfp, size_t size, |
| 133 | void **p) | 137 | void **p) |
| 134 | { | 138 | { |
| @@ -2,11 +2,17 @@ · 1 unmodified line | |||
| 2 | /* | 2 | /* |
| 3 | * maple_tree.c: Userspace shim for maple tree test-suite | 3 | * maple_tree.c: Userspace shim for maple tree test-suite |
| 4 | * Copyright (c) 2018 Liam R. Howlett <Liam.Howlett@Oracle.com> | 4 | * Copyright (c) 2018 Liam R. Howlett <Liam.Howlett@Oracle.com> |
| 5 | * | ||
| 6 | * Any tests that require internal knowledge of the tree or threads and other | ||
| 7 | * difficult to handle in kernel tests. | ||
| 5 | */ | 8 | */ |
| 6 | 9 | ||
| 7 | #define CONFIG_DEBUG_MAPLE_TREE | 10 | #define CONFIG_DEBUG_MAPLE_TREE |
| 8 | #define CONFIG_MAPLE_SEARCH | 11 | #define CONFIG_MAPLE_SEARCH |
| 12 | #define MAPLE_32BIT (MAPLE_NODE_SLOTS > 31) | ||
| 9 | #include "test.h" | 13 | #include "test.h" |
| 14 | #include <stdlib.h> | ||
| 15 | #include <time.h> | ||
| 10 | 16 | ||
| 11 | #define module_init(x) | 17 | #define module_init(x) |
| 12 | #define module_exit(x) | 18 | #define module_exit(x) |
| @@ -18,6 +24,35717 @@ · 5 unmodified lines | |||
| 18 | #undef CONFIG_DEBUG_MAPLE_TREE | 24 | #undef CONFIG_DEBUG_MAPLE_TREE |
| 19 | #include "../../../lib/test_maple_tree.c" | 25 | #include "../../../lib/test_maple_tree.c" |
| 20 | 26 | ||
| 27 | #define RCU_RANGE_COUNT 1000 | ||
| 28 | #define RCU_MT_BUG_ON(test, y) {if (y) { test->stop = true; } MT_BUG_ON(test->mt, y); } | ||
| 29 | |||
| 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.
This diff is large: its 40 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 18 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 9 lines aren’t shown here.
This diff is large: its 35 lines aren’t shown here.