Re: [PATCH] kexec_file: remove unused arch_kexec_locate_mem_hole hook

From: Baoquan He

Date: Thu Aug 27 2026 - 22:10:54 EST


On 08/27/26 at 08:14pm, Sourabh Jain wrote:
> No architecture provides an implementation of
> arch_kexec_locate_mem_hole(). Use kexec_locate_mem_hole() directly
> and remove the unused fallback wrapper from the kexec header.

Since below commit, the last user was gone:
commit 6e5250eaa665f ("powerpc/crash: use generic APIs to locate memory hole for kdump")

Acked-by: Baoquan He <baoquan.he@xxxxxxxxx>

>
> This simplifies the kexec memory allocation path without changing
> its behavior.
>
> Cc: Albert Ou <aou@xxxxxxxxxxxxxxxxx>
> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Cc: Baoquan He <baoquan.he@xxxxxxxxx>
> Cc: Mike Rapoport <rppt@xxxxxxxxxx>
> Cc: Palmer Dabbelt <palmer@xxxxxxxxxxx>
> Cc: Pasha Tatashin <pasha.tatashin@xxxxxxxxxx>
> Cc: Paul Walmsley <pjw@xxxxxxxxxx>
> Cc: Pratyush Yadav <pratyush@xxxxxxxxxx>
> Cc: linux-riscv@xxxxxxxxxxxxxxxxxxx
> Cc: kexec@xxxxxxxxxxxxxxxxxxx
> Signed-off-by: Sourabh Jain <sourabhjain@xxxxxxxxxxxxx>
> ---
> arch/riscv/kernel/kexec_elf.c | 2 +-
> include/linux/kexec.h | 15 ---------------
> kernel/kexec_file.c | 2 +-
> 3 files changed, 2 insertions(+), 17 deletions(-)
>
> diff --git a/arch/riscv/kernel/kexec_elf.c b/arch/riscv/kernel/kexec_elf.c
> index 3e9a32acb8f2..ca5abbad59e5 100644
> --- a/arch/riscv/kernel/kexec_elf.c
> +++ b/arch/riscv/kernel/kexec_elf.c
> @@ -91,7 +91,7 @@ static int elf_find_pbase(struct kimage *image, unsigned long kernel_len,
> kbuf.memsz = ALIGN(kernel_len, PAGE_SIZE);
> kbuf.cma = NULL;
> kbuf.top_down = false;
> - ret = arch_kexec_locate_mem_hole(&kbuf);
> + ret = kexec_locate_mem_hole(&kbuf);
> if (!ret) {
> *old_pbase = lowest_paddr;
> *new_pbase = kbuf.mem;
> diff --git a/include/linux/kexec.h b/include/linux/kexec.h
> index 0af8ae4fdd08..e5f1cfc11fef 100644
> --- a/include/linux/kexec.h
> +++ b/include/linux/kexec.h
> @@ -259,21 +259,6 @@ int kexec_kernel_verify_pe_sig(const char *kernel, unsigned long kernel_len);
> extern int kexec_add_buffer(struct kexec_buf *kbuf);
> int kexec_locate_mem_hole(struct kexec_buf *kbuf);
>
> -#ifndef arch_kexec_locate_mem_hole
> -/**
> - * arch_kexec_locate_mem_hole - Find free memory to place the segments.
> - * @kbuf: Parameters for the memory search.
> - *
> - * On success, kbuf->mem will have the start address of the memory region found.
> - *
> - * Return: 0 on success, negative errno on error.
> - */
> -static inline int arch_kexec_locate_mem_hole(struct kexec_buf *kbuf)
> -{
> - return kexec_locate_mem_hole(kbuf);
> -}
> -#endif
> -
> #ifndef arch_kexec_apply_relocations_add
> /*
> * arch_kexec_apply_relocations_add - apply relocations of type RELA
> diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c
> index 59fb9d71e9d8..9a981359addd 100644
> --- a/kernel/kexec_file.c
> +++ b/kernel/kexec_file.c
> @@ -784,7 +784,7 @@ int kexec_add_buffer(struct kexec_buf *kbuf)
> kbuf->cma = NULL;
>
> /* Walk the RAM ranges and allocate a suitable range for the buffer */
> - ret = arch_kexec_locate_mem_hole(kbuf);
> + ret = kexec_locate_mem_hole(kbuf);
> if (ret)
> return ret;
>
> --
> 2.55.0
>