Christophe Leroy <christophe.le...@csgroup.eu> writes: > Le 19/09/2024 à 04:56, Ritesh Harjani (IBM) a écrit : >> Kfence on book3s Hash on pseries is anyways broken. It fails to boot >> due to RMA size limitation. That is because, kfence with Hash uses >> debug_pagealloc infrastructure. debug_pagealloc allocates linear map >> for entire dram size instead of just kfence relevant objects. >> This means for 16TB of DRAM it will require (16TB >> PAGE_SHIFT) >> which is 256MB which is half of RMA region on P8. >> crash kernel reserves 256MB and we also need 2048 * 16KB * 3 for >> emergency stack and some more for paca allocations. >> That means there is not enough memory for reserving the full linear map >> in the RMA region, if the DRAM size is too big (>=16TB) >> (The issue is seen above 8TB with crash kernel 256 MB reservation). >> >> Now Kfence does not require linear memory map for entire DRAM. >> It only needs for kfence objects. So this patch temporarily removes the >> kfence functionality since debug_pagealloc code needs some refactoring. >> We will bring in kfence on Hash support in later patches. >> >> Signed-off-by: Ritesh Harjani (IBM) <ritesh.l...@gmail.com> >> --- >> arch/powerpc/include/asm/kfence.h | 5 +++++ >> arch/powerpc/mm/book3s64/hash_utils.c | 16 +++++++++++----- >> 2 files changed, 16 insertions(+), 5 deletions(-) >> >> diff --git a/arch/powerpc/include/asm/kfence.h >> b/arch/powerpc/include/asm/kfence.h >> index fab124ada1c7..f3a9476a71b3 100644 >> --- a/arch/powerpc/include/asm/kfence.h >> +++ b/arch/powerpc/include/asm/kfence.h >> @@ -10,6 +10,7 @@ >> >> #include <linux/mm.h> >> #include <asm/pgtable.h> >> +#include <asm/mmu.h> >> >> #ifdef CONFIG_PPC64_ELF_ABI_V1 >> #define ARCH_FUNC_PREFIX "." >> @@ -25,6 +26,10 @@ static inline void disable_kfence(void) >> >> static inline bool arch_kfence_init_pool(void) >> { >> +#ifdef CONFIG_PPC64 >> + if (!radix_enabled()) > > No need for a #ifdef here, you can just do: > > if (IS_ENABLED(CONFIG_PPC64) && !radix_enabled()) > return false; > >
This special radix handling is anyway dropped in later pacthes. So I didn't bother changing it here. >> + return false; >> +#endif >> return !kfence_disabled; > > But why not just set kfence_disabled to true by calling disable_kfence() > from one of the powerpc init functions ? > This patch is only temporarily disabling kfence support for only Hash. This special Hash handling gets removed in patch-10 which brings back kfence support. -ritesh