kexec failing with KVM on Power8 baremetal host

Madhavan Srinivasan maddy at linux.ibm.com
Wed Feb 5 17:27:32 AEDT 2025



On 2/5/25 12:35 AM, Stefan Berger wrote:
> I bisected Linux between 6.13.0 and 6.12.0 due to failing kexec on a Power8 baremetal host on 6.13.0:
> 

Can you please attach your config, also i cant recreate this host.

Maddy

> 8fec58f503b296af87ffca3898965e3054f2b616 is the first bad commit
> commit 8fec58f503b296af87ffca3898965e3054f2b616
> Author: Ritesh Harjani (IBM) <ritesh.list at gmail.com>
> Date:   Fri Oct 18 22:59:50 2024 +0530
> 
>     book3s64/hash: Add kfence functionality
> 
>     Now that linear map functionality of debug_pagealloc is made generic,
>     enable kfence to use this generic infrastructure.
> 
>     1. Define kfence related linear map variables.
>        - u8 *linear_map_kf_hash_slots;
>        - unsigned long linear_map_kf_hash_count;
>        - DEFINE_RAW_SPINLOCK(linear_map_kf_hash_lock);
>     2. The linear map size allocated in RMA region is quite small
>        (KFENCE_POOL_SIZE >> PAGE_SHIFT) which is 512 bytes by default.
>     3. kfence pool memory is reserved using memblock_phys_alloc() which has
>        can come from anywhere.
>        (default 255 objects => ((1+255) * 2) << PAGE_SHIFT = 32MB)
>     4. The hash slot information for kfence memory gets added in linear map
>        in hash_linear_map_add_slot() (which also adds for debug_pagealloc).
> 
>     Reported-by: Pavithra Prakash <pavrampu at linux.vnet.ibm.com>
>     Signed-off-by: Ritesh Harjani (IBM) <ritesh.list at gmail.com>
>     Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
>     Link: https://patch.msgid.link/5c2b61941b344077a2b8654dab46efa0322af3af.1729271995.git.ritesh.list@gmail.com
> 
>  arch/powerpc/include/asm/kfence.h     |   5 ---
>  arch/powerpc/mm/book3s64/hash_utils.c | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
>  2 files changed, 149 insertions(+), 18 deletions(-)
> 
> 
> Reverting part of this patch by applying the following changes to 6.13.0 resolves the issue:
> 
> 
> diff --git a/arch/powerpc/include/asm/kfence.h b/arch/powerpc/include/asm/kfence.h
> index 1f7cab58ab2c..e7981719313c 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())
> +               return false;
> +#endif
>         return !kfence_disabled;
>  }
> 
> 
> 



More information about the Linuxppc-dev mailing list