From d001dccf2b8beec1864edf5668442adc861ca171 Mon Sep 17 00:00:00 2001 From: Kairui Song Date: Mon, 6 Jun 2022 13:52:03 +0800 Subject: [PATCH] x86, arm64: Add ARCH_WANT_RESERVE_CRASH_KERNEL config From: Chen Zhou Link: https://lkml.org/lkml/2021/1/30/53 Link: https://github.com/openeuler-mirror/kernel/commit/c8013ee6cd2b8a8dcb99dab1b5cea83c13cd0b2c We make the functions reserve_crashkernel[_low]() as generic for x86 and arm64. Since reserve_crashkernel[_low]() implementations are quite similar on other architectures as well, we can have more users of this later. So have CONFIG_ARCH_WANT_RESERVE_CRASH_KERNEL in arch/Kconfig and select this by X86 and ARM64. Suggested-by: Mike Rapoport Signed-off-by: Chen Zhou Acked-by: Xie XiuQi Signed-off-by: Zheng Zengkai Signed-off-by: Kairui Song Reviewed-by: Bin Lai --- arch/Kconfig | 3 +++ arch/arm64/Kconfig | 1 + arch/x86/Kconfig | 2 ++ kernel/crash_core.c | 7 ++----- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/arch/Kconfig b/arch/Kconfig index a8df66e64544..754a07a151d0 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -24,6 +24,9 @@ config KEXEC_ELF config HAVE_IMA_KEXEC bool +config ARCH_WANT_RESERVE_CRASH_KERNEL + bool + config HOTPLUG_SMT bool diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 7a46b90ce7d4..c1357f45a35e 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -73,6 +73,7 @@ config ARM64 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT select ARCH_WANT_FRAME_POINTERS select ARCH_WANT_HUGE_PMD_SHARE if ARM64_4K_PAGES || (ARM64_16K_PAGES && !ARM64_VA_BITS_36) + select ARCH_WANT_RESERVE_CRASH_KERNEL if KEXEC_CORE select ARCH_HAS_UBSAN_SANITIZE_ALL select ARM_AMBA select ARM_ARCH_TIMER diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index c441a922e3e6..8a0da1cef972 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -12,6 +12,7 @@ config X86_32 depends on !64BIT # Options that are inherently 32-bit kernel only: select ARCH_WANT_IPC_PARSE_VERSION + select ARCH_WANT_RESERVE_CRASH_KERNEL if KEXEC_CORE select CLKSRC_I8253 select CLONE_BACKWARDS select HAVE_DEBUG_STACKOVERFLOW @@ -26,6 +27,7 @@ config X86_64 select ARCH_HAS_GIGANTIC_PAGE select ARCH_SUPPORTS_INT128 select ARCH_USE_CMPXCHG_LOCKREF + select ARCH_WANT_RESERVE_CRASH_KERNEL if KEXEC_CORE select HAVE_ARCH_SOFT_DIRTY select MODULES_USE_ELF_RELA select NEED_DMA_MAP_STATE diff --git a/kernel/crash_core.c b/kernel/crash_core.c index 7efc05f619fb..9704304182ce 100644 --- a/kernel/crash_core.c +++ b/kernel/crash_core.c @@ -318,9 +318,7 @@ int __init parse_crashkernel_low(char *cmdline, * --------- Crashkernel reservation ------------------------------ */ -#ifdef CONFIG_KEXEC_CORE - -#if defined(CONFIG_X86) || defined(CONFIG_ARM64) +#ifdef CONFIG_ARCH_WANT_RESERVE_CRASH_KERNEL static int __init reserve_crashkernel_low(void) { #ifdef CONFIG_64BIT @@ -448,8 +446,7 @@ void __init reserve_crashkernel(void) crashk_res.start = crash_base; crashk_res.end = crash_base + crash_size - 1; } -#endif -#endif /* CONFIG_KEXEC_CORE */ +#endif /* CONFIG_ARCH_WANT_RESERVE_CRASH_KERNEL */ Elf_Word *append_elf_note(Elf_Word *buf, char *name, unsigned int type, void *data, size_t data_len)