From a78d9e8141261369833de3cd2aa4e7e7880bddaf Mon Sep 17 00:00:00 2001 From: Jason Zeng Date: Fri, 30 Jun 2023 09:38:04 -0400 Subject: [PATCH 1/4] mm/hugetlb: fix parameter passed to allocate bootmem memory Intel inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I7HUWC CVE: NA ----------------------------------------------- Intel-SIG: hugetlb: fix parameter passed to allocate bootmem memory __alloc_bootmem_huge_page_inner() should use 'min_addr" as the 3rd parameter to invoke memblock_alloc_try_nid_raw() and memblock_alloc_try_nid_raw_flags. Fixes: 74bfdf157f1f ("mm/hugetlb: Hugetlb use non-mirrored memory if memory reliable is enabled") Signed-off-by: Jason Zeng --- mm/hugetlb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index a1cf6a1e9cec..85d3b21587dd 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2735,10 +2735,10 @@ static void *__init __alloc_bootmem_huge_page_inner(phys_addr_t size, int nid) { if (!mem_reliable_is_enabled()) - return memblock_alloc_try_nid_raw(size, align, max_addr, + return memblock_alloc_try_nid_raw(size, align, min_addr, max_addr, nid); - return memblock_alloc_try_nid_raw_flags(size, align, max_addr, max_addr, + return memblock_alloc_try_nid_raw_flags(size, align, min_addr, max_addr, nid, MEMBLOCK_NOMIRROR); } -- Gitee From 714b582e1796fefd9d81f83fdc12a56390af1a99 Mon Sep 17 00:00:00 2001 From: Jason Zeng Date: Thu, 29 Jun 2023 15:41:46 +0800 Subject: [PATCH 2/4] mm: Enable reliable memory for x86 platform Intel inclusion category: feature bugzilla: https://gitee.com/openeuler/intel-kernel/issues/I7HV16 CVE: NA ---------------------------------------------- Intel-SIG: Enable reliable memory for x86 platform Currently reliable memory is only enabled for ARM64 platform. Hardware on Intel platform also support this feature, so enable it for x86. Signed-off-by: Jason Zeng --- Documentation/admin-guide/kernel-parameters.txt | 2 +- mm/Kconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 2addbf715cc0..e4976a7ecf64 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -4810,7 +4810,7 @@ [KNL, SMP] Set scheduler's default relax_domain_level. See Documentation/admin-guide/cgroup-v1/cpusets.rst. - reliable_debug= [ARM64] + reliable_debug= [ARM64,X86-64] Format: [F][,S][,P] Only works with CONFIG_MEMORY_RELIABLE and "kernelcore=reliable" is configured. diff --git a/mm/Kconfig b/mm/Kconfig index 0fe459e79336..70c85533aada 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -974,7 +974,7 @@ config PID_RESERVE config MEMORY_RELIABLE bool "Support for memory reliable" depends on NEED_MULTIPLE_NODES - depends on ARM64 + depends on ARM64 || X86_64 default n help Memory reliable is based on mirror memory. It has the following -- Gitee From a6616712d078874503da26edbeddf5726819da1a Mon Sep 17 00:00:00 2001 From: Jason Zeng Date: Thu, 29 Jun 2023 15:42:11 +0800 Subject: [PATCH 3/4] Enable reliable memory in openeuler x86 default config Intel inclusion category: feature bugzilla: https://gitee.com/openeuler/intel-kernel/issues/I7HV16 CVE: NA ------------------------------------ Intel-SIG: Enable reliable memory in openeuler x86 default config Signed-off-by: Jason Zeng --- arch/x86/configs/openeuler_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/x86/configs/openeuler_defconfig b/arch/x86/configs/openeuler_defconfig index 9adedd9d615a..f8d4efc73963 100644 --- a/arch/x86/configs/openeuler_defconfig +++ b/arch/x86/configs/openeuler_defconfig @@ -1086,6 +1086,7 @@ CONFIG_ARCH_HAS_PKEYS=y # CONFIG_READ_ONLY_THP_FOR_FS is not set CONFIG_ARCH_HAS_PTE_SPECIAL=y CONFIG_MAPPING_DIRTY_HELPERS=y +CONFIG_MEMORY_RELIABLE=y # CONFIG_CLEAR_FREELIST_PAGE is not set # -- Gitee From 6dc7cbdac6cd3c1471cff7ba7aa959ee9a5a1bf3 Mon Sep 17 00:00:00 2001 From: Jason Zeng Date: Sun, 13 Aug 2023 11:08:54 -0400 Subject: [PATCH 4/4] mm/reliable: Fix kabi change Intel inclusion category: feature bugzilla: https://gitee.com/openeuler/intel-kernel/issues/I7HV16 CVE: NA ---------------------------------------- Intel-SIG: mm/reliable: Fix kabi change Signed-off-by: Jason Zeng --- include/linux/mm_types.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index e3eaf458787a..9656fa94e42c 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -612,7 +612,7 @@ struct mm_struct { u32 pasid; #endif -#ifdef CONFIG_MEMORY_RELIABLE +#if defined(CONFIG_MEMORY_RELIABLE) && !defined(CONFIG_X86_64) /* total used reliable pages */ KABI_RENAME(atomic_long_t reserve_0, atomic_long_t reliable_nr_page); #endif @@ -638,7 +638,11 @@ struct mm_struct { KABI_RESERVE(2) KABI_RESERVE(3) #endif +#if defined(CONFIG_X86_64) && defined(CONFIG_MEMORY_RELIABLE) + KABI_USE(4, atomic_long_t reliable_nr_page) +#else KABI_RESERVE(4) +#endif KABI_RESERVE(5) KABI_RESERVE(6) KABI_RESERVE(7) -- Gitee