From de6bc07a63f0f8a7e09c3f1f1c821445f18c7f96 Mon Sep 17 00:00:00 2001 From: "gumi@linux.alibaba.com" Date: Wed, 11 Jun 2025 14:57:58 +0800 Subject: [PATCH 1/2] anolis: sw64: update kconfig for sw64 ANBZ: #4688 update kconfig for sw64. Signed-off-by: Min Li --- anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_IGB | 1 + anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_KVM | 1 + anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_VGA_CONSOLE | 2 +- anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_IGB | 1 + anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_KVM | 1 + anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_NR_CPUS | 2 +- anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_VGA_CONSOLE | 2 +- anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_ATA | 1 + anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_BLK_DEV_SD | 1 + anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_CHR_DEV_SG | 1 + anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_SATA_AHCI | 1 + anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_ATA | 1 + anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_BLK_DEV_SD | 1 + anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_CHR_DEV_SG | 1 + anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_SATA_AHCI | 1 + 15 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_IGB create mode 100644 anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_KVM create mode 100644 anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_IGB create mode 100644 anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_KVM create mode 100644 anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_ATA create mode 100644 anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_BLK_DEV_SD create mode 100644 anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_CHR_DEV_SG create mode 100644 anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_SATA_AHCI create mode 100644 anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_ATA create mode 100644 anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_BLK_DEV_SD create mode 100644 anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_CHR_DEV_SG create mode 100644 anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_SATA_AHCI diff --git a/anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_IGB b/anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_IGB new file mode 100644 index 000000000000..9d5329a8f4a8 --- /dev/null +++ b/anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_IGB @@ -0,0 +1 @@ +CONFIG_IGB=y diff --git a/anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_KVM b/anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_KVM new file mode 100644 index 000000000000..14f90d8d6801 --- /dev/null +++ b/anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_KVM @@ -0,0 +1 @@ +CONFIG_KVM=y diff --git a/anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_VGA_CONSOLE b/anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_VGA_CONSOLE index 461d0b1d4e82..5b00b2f22e80 100644 --- a/anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_VGA_CONSOLE +++ b/anolis/configs/L0-MANDATORY/sw_64-6b/CONFIG_VGA_CONSOLE @@ -1 +1 @@ -CONFIG_VGA_CONSOLE=y +# CONFIG_VGA_CONSOLE is not set diff --git a/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_IGB b/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_IGB new file mode 100644 index 000000000000..9d5329a8f4a8 --- /dev/null +++ b/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_IGB @@ -0,0 +1 @@ +CONFIG_IGB=y diff --git a/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_KVM b/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_KVM new file mode 100644 index 000000000000..14f90d8d6801 --- /dev/null +++ b/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_KVM @@ -0,0 +1 @@ +CONFIG_KVM=y diff --git a/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_NR_CPUS b/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_NR_CPUS index fa1ab7e94841..9ce2b2de6e75 100644 --- a/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_NR_CPUS +++ b/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_NR_CPUS @@ -1 +1 @@ -CONFIG_NR_CPUS=64 +CONFIG_NR_CPUS=512 diff --git a/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_VGA_CONSOLE b/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_VGA_CONSOLE index 461d0b1d4e82..5b00b2f22e80 100644 --- a/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_VGA_CONSOLE +++ b/anolis/configs/L0-MANDATORY/sw_64-8a/CONFIG_VGA_CONSOLE @@ -1 +1 @@ -CONFIG_VGA_CONSOLE=y +# CONFIG_VGA_CONSOLE is not set diff --git a/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_ATA b/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_ATA new file mode 100644 index 000000000000..76a102725bc8 --- /dev/null +++ b/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_ATA @@ -0,0 +1 @@ +CONFIG_ATA=y diff --git a/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_BLK_DEV_SD b/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_BLK_DEV_SD new file mode 100644 index 000000000000..e71b9a47a629 --- /dev/null +++ b/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_BLK_DEV_SD @@ -0,0 +1 @@ +CONFIG_BLK_DEV_SD=y diff --git a/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_CHR_DEV_SG b/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_CHR_DEV_SG new file mode 100644 index 000000000000..18c2fc641a04 --- /dev/null +++ b/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_CHR_DEV_SG @@ -0,0 +1 @@ +CONFIG_CHR_DEV_SG=y diff --git a/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_SATA_AHCI b/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_SATA_AHCI new file mode 100644 index 000000000000..3551035a1436 --- /dev/null +++ b/anolis/configs/L1-RECOMMEND/sw_64-6b/CONFIG_SATA_AHCI @@ -0,0 +1 @@ +CONFIG_SATA_AHCI=y diff --git a/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_ATA b/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_ATA new file mode 100644 index 000000000000..76a102725bc8 --- /dev/null +++ b/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_ATA @@ -0,0 +1 @@ +CONFIG_ATA=y diff --git a/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_BLK_DEV_SD b/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_BLK_DEV_SD new file mode 100644 index 000000000000..e71b9a47a629 --- /dev/null +++ b/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_BLK_DEV_SD @@ -0,0 +1 @@ +CONFIG_BLK_DEV_SD=y diff --git a/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_CHR_DEV_SG b/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_CHR_DEV_SG new file mode 100644 index 000000000000..18c2fc641a04 --- /dev/null +++ b/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_CHR_DEV_SG @@ -0,0 +1 @@ +CONFIG_CHR_DEV_SG=y diff --git a/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_SATA_AHCI b/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_SATA_AHCI new file mode 100644 index 000000000000..3551035a1436 --- /dev/null +++ b/anolis/configs/L1-RECOMMEND/sw_64-8a/CONFIG_SATA_AHCI @@ -0,0 +1 @@ +CONFIG_SATA_AHCI=y -- Gitee From adbe837222edd02e75df8fc6d6ed6c5736606c1f Mon Sep 17 00:00:00 2001 From: Gu Yuchen Date: Tue, 3 Jun 2025 10:07:55 +0800 Subject: [PATCH 2/2] anolis: sw64: set module region to the 2GB space below vmalloc area ANBZ: #4688 The module region used to be allocated across the entire vmalloc area using generic module_alloc function. If a considerable portion of the vmalloc area is occupied by a large application, the sections of the same module are scattered beyond the relocation limit of the module. Architecture-specific module_alloc is implemented, moving modules to the 2GB region before vmalloc_start. Signed-off-by: Gu Yuchen --- arch/sw_64/include/asm/pgtable.h | 4 +++- arch/sw_64/kernel/module.c | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/arch/sw_64/include/asm/pgtable.h b/arch/sw_64/include/asm/pgtable.h index 0ad6f12c3275..0092d88c199f 100644 --- a/arch/sw_64/include/asm/pgtable.h +++ b/arch/sw_64/include/asm/pgtable.h @@ -78,7 +78,9 @@ static inline void set_p4d(p4d_t *p4dp, p4d_t p4d) /* Number of pointers that fit on a page: this will go away. */ #define PTRS_PER_PAGE (1UL << (PAGE_SHIFT - 3)) -#define VMALLOC_START (-2 * PGDIR_SIZE) +#define MODULES_VADDR 0xfffff00000000000 +#define MODULES_END 0xfffff0007fffffff +#define VMALLOC_START 0xfffff00080000000 #ifndef CONFIG_SPARSEMEM_VMEMMAP #define VMALLOC_END (-PGDIR_SIZE) #else diff --git a/arch/sw_64/kernel/module.c b/arch/sw_64/kernel/module.c index 67264e3644a7..fb7c61c1b481 100644 --- a/arch/sw_64/kernel/module.c +++ b/arch/sw_64/kernel/module.c @@ -1,6 +1,9 @@ // SPDX-License-Identifier: GPL-2.0 #include #include +#include +#include +#include #define DEBUGP(fmt...) @@ -277,3 +280,10 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab, return 0; } + +void *module_alloc(unsigned long size) +{ + return __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END, + GFP_KERNEL, PAGE_KERNEL_EXEC, VM_FLUSH_RESET_PERMS, + NUMA_NO_NODE, __builtin_return_address(0)); +} -- Gitee