* [PATCH v6 01/14] kexec: consolidate kexec and crash options into kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 02/14] x86/kexec: refactor for kernel/Kconfig.kexec Eric DeVolder
` (12 subsequent siblings)
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The config options for kexec and crash features are consolidated
into new file kernel/Kconfig.kexec. Under the "General Setup" submenu
is a new submenu "Kexec and crash handling". All the kexec and
crash options that were once in the arch-dependent submenu "Processor
type and features" are now consolidated in the new submenu.
The following options are impacted:
- KEXEC
- KEXEC_FILE
- KEXEC_SIG
- KEXEC_SIG_FORCE
- KEXEC_BZIMAGE_VERIFY_SIG
- KEXEC_JUMP
- CRASH_DUMP
The three main options are KEXEC, KEXEC_FILE and CRASH_DUMP.
Architectures specify support of certain KEXEC and CRASH features with
similarly named new ARCH_SUPPORTS_<option> config options.
Architectures can utilize the new ARCH_SELECTS_<option> config
options to specify additional components when <option> is enabled.
To summarize, the ARCH_SUPPORTS_<option> permits the <option> to be
enabled, and the ARCH_SELECTS_<option> handles side effects (ie.
select statements).
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
---
arch/Kconfig | 13 -----
init/Kconfig | 2 +
kernel/Kconfig.kexec | 116 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 118 insertions(+), 13 deletions(-)
create mode 100644 kernel/Kconfig.kexec
diff --git a/arch/Kconfig b/arch/Kconfig
index aff2746c8af2..b2872e9d3760 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -11,19 +11,6 @@ source "arch/$(SRCARCH)/Kconfig"
menu "General architecture-dependent options"
-config CRASH_CORE
- bool
-
-config KEXEC_CORE
- select CRASH_CORE
- bool
-
-config KEXEC_ELF
- bool
-
-config HAVE_IMA_KEXEC
- bool
-
config ARCH_HAS_SUBPAGE_FAULTS
bool
help
diff --git a/init/Kconfig b/init/Kconfig
index f7f65af4ee12..639e8a3363c3 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1927,6 +1927,8 @@ config BINDGEN_VERSION_TEXT
config TRACEPOINTS
bool
+source "kernel/Kconfig.kexec"
+
endmenu # General setup
source "arch/Kconfig"
diff --git a/kernel/Kconfig.kexec b/kernel/Kconfig.kexec
new file mode 100644
index 000000000000..ff72e45cfaef
--- /dev/null
+++ b/kernel/Kconfig.kexec
@@ -0,0 +1,116 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+menu "Kexec and crash features"
+
+config CRASH_CORE
+ bool
+
+config KEXEC_CORE
+ select CRASH_CORE
+ bool
+
+config KEXEC_ELF
+ bool
+
+config HAVE_IMA_KEXEC
+ bool
+
+config KEXEC
+ bool "Enable kexec system call"
+ default ARCH_DEFAULT_KEXEC
+ depends on ARCH_SUPPORTS_KEXEC
+ select KEXEC_CORE
+ help
+ kexec is a system call that implements the ability to shutdown your
+ current kernel, and to start another kernel. It is like a reboot
+ but it is independent of the system firmware. And like a reboot
+ you can start any kernel with it, not just Linux.
+
+ The name comes from the similarity to the exec system call.
+
+ It is an ongoing process to be certain the hardware in a machine
+ is properly shutdown, so do not be surprised if this code does not
+ initially work for you. As of this writing the exact hardware
+ interface is strongly in flux, so no good recommendation can be
+ made.
+
+config KEXEC_FILE
+ bool "Enable kexec file based system call"
+ depends on ARCH_SUPPORTS_KEXEC_FILE
+ select KEXEC_CORE
+ help
+ This is new version of kexec system call. This system call is
+ file based and takes file descriptors as system call argument
+ for kernel and initramfs as opposed to list of segments as
+ accepted by kexec system call.
+
+config KEXEC_SIG
+ bool "Verify kernel signature during kexec_file_load() syscall"
+ depends on ARCH_SUPPORTS_KEXEC_SIG
+ depends on KEXEC_FILE
+ help
+ This option makes the kexec_file_load() syscall check for a valid
+ signature of the kernel image. The image can still be loaded without
+ a valid signature unless you also enable KEXEC_SIG_FORCE, though if
+ there's a signature that we can check, then it must be valid.
+
+ In addition to this option, you need to enable signature
+ verification for the corresponding kernel image type being
+ loaded in order for this to work.
+
+config KEXEC_SIG_FORCE
+ bool "Require a valid signature in kexec_file_load() syscall"
+ depends on ARCH_SUPPORTS_KEXEC_SIG_FORCE
+ depends on KEXEC_SIG
+ help
+ This option makes kernel signature verification mandatory for
+ the kexec_file_load() syscall.
+
+config KEXEC_IMAGE_VERIFY_SIG
+ bool "Enable Image signature verification support (ARM)"
+ default ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG
+ depends on ARCH_SUPPORTS_KEXEC_IMAGE_VERIFY_SIG
+ depends on KEXEC_SIG
+ depends on EFI && SIGNED_PE_FILE_VERIFICATION
+ help
+ Enable Image signature verification support.
+
+config KEXEC_BZIMAGE_VERIFY_SIG
+ bool "Enable bzImage signature verification support"
+ depends on ARCH_SUPPORTS_KEXEC_BZIMAGE_VERIFY_SIG
+ depends on KEXEC_SIG
+ depends on SIGNED_PE_FILE_VERIFICATION
+ select SYSTEM_TRUSTED_KEYRING
+ help
+ Enable bzImage signature verification support.
+
+config KEXEC_JUMP
+ bool "kexec jump"
+ depends on ARCH_SUPPORTS_KEXEC_JUMP
+ depends on KEXEC && HIBERNATION
+ help
+ Jump between original kernel and kexeced kernel and invoke
+ code in physical address mode via KEXEC
+
+config CRASH_DUMP
+ bool "kernel crash dumps"
+ depends on ARCH_SUPPORTS_CRASH_DUMP
+ depends on ARCH_SUPPORTS_KEXEC
+ select CRASH_CORE
+ select KEXEC_CORE
+ select KEXEC
+ help
+ Generate crash dump after being started by kexec.
+ This should be normally only set in special crash dump kernels
+ which are loaded in the main kernel with kexec-tools into
+ a specially reserved region and then later executed after
+ a crash by kdump/kexec. The crash dump kernel must be compiled
+ to a memory address not used by the main kernel or BIOS using
+ PHYSICAL_START, or it must be built as a relocatable image
+ (CONFIG_RELOCATABLE=y).
+ For more details see Documentation/admin-guide/kdump/kdump.rst
+
+ For s390, this option also enables zfcpdump.
+ See also <file:Documentation/s390/zfcpdump.rst>
+
+endmenu
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 02/14] x86/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 01/14] kexec: consolidate kexec and crash options into kernel/Kconfig.kexec Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-13 11:13 ` Leizhen (ThunderTown)
2023-07-12 16:15 ` [PATCH v6 03/14] arm/kexec: " Eric DeVolder
` (11 subsequent siblings)
13 siblings, 1 reply; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
---
arch/x86/Kconfig | 92 ++++++++++--------------------------------------
1 file changed, 19 insertions(+), 73 deletions(-)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 7422db409770..9767a343f7c2 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2040,88 +2040,34 @@ config EFI_RUNTIME_MAP
source "kernel/Kconfig.hz"
-config KEXEC
- bool "kexec system call"
- select KEXEC_CORE
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
-
- The name comes from the similarity to the exec system call.
-
- It is an ongoing process to be certain the hardware in a machine
- is properly shutdown, so do not be surprised if this code does not
- initially work for you. As of this writing the exact hardware
- interface is strongly in flux, so no good recommendation can be
- made.
-
-config KEXEC_FILE
- bool "kexec file based system call"
- select KEXEC_CORE
- select HAVE_IMA_KEXEC if IMA
- depends on X86_64
- depends on CRYPTO=y
- depends on CRYPTO_SHA256=y
- help
- This is new version of kexec system call. This system call is
- file based and takes file descriptors as system call argument
- for kernel and initramfs as opposed to list of segments as
- accepted by previous system call.
+config ARCH_SUPPORTS_KEXEC
+ def_bool y
-config ARCH_HAS_KEXEC_PURGATORY
- def_bool KEXEC_FILE
+config ARCH_SUPPORTS_KEXEC_FILE
+ def_bool X86_64 && CRYPTO && CRYPTO_SHA256
-config KEXEC_SIG
- bool "Verify kernel signature during kexec_file_load() syscall"
+config ARCH_SELECTS_KEXEC_FILE
+ def_bool y
depends on KEXEC_FILE
- help
+ select HAVE_IMA_KEXEC if IMA
- This option makes the kexec_file_load() syscall check for a valid
- signature of the kernel image. The image can still be loaded without
- a valid signature unless you also enable KEXEC_SIG_FORCE, though if
- there's a signature that we can check, then it must be valid.
+config ARCH_HAS_KEXEC_PURGATORY
+ def_bool KEXEC_FILE
- In addition to this option, you need to enable signature
- verification for the corresponding kernel image type being
- loaded in order for this to work.
+config ARCH_SUPPORTS_KEXEC_SIG
+ def_bool y
-config KEXEC_SIG_FORCE
- bool "Require a valid signature in kexec_file_load() syscall"
- depends on KEXEC_SIG
- help
- This option makes kernel signature verification mandatory for
- the kexec_file_load() syscall.
+config ARCH_SUPPORTS_KEXEC_SIG_FORCE
+ def_bool y
-config KEXEC_BZIMAGE_VERIFY_SIG
- bool "Enable bzImage signature verification support"
- depends on KEXEC_SIG
- depends on SIGNED_PE_FILE_VERIFICATION
- select SYSTEM_TRUSTED_KEYRING
- help
- Enable bzImage signature verification support.
+config ARCH_SUPPORTS_KEXEC_BZIMAGE_VERIFY_SIG
+ def_bool y
-config CRASH_DUMP
- bool "kernel crash dumps"
- depends on X86_64 || (X86_32 && HIGHMEM)
- help
- Generate crash dump after being started by kexec.
- This should be normally only set in special crash dump kernels
- which are loaded in the main kernel with kexec-tools into
- a specially reserved region and then later executed after
- a crash by kdump/kexec. The crash dump kernel must be compiled
- to a memory address not used by the main kernel or BIOS using
- PHYSICAL_START, or it must be built as a relocatable image
- (CONFIG_RELOCATABLE=y).
- For more details see Documentation/admin-guide/kdump/kdump.rst
+config ARCH_SUPPORTS_KEXEC_JUMP
+ def_bool y
-config KEXEC_JUMP
- bool "kexec jump"
- depends on KEXEC && HIBERNATION
- help
- Jump between original kernel and kexeced kernel and invoke
- code in physical address mode via KEXEC
+config ARCH_SUPPORTS_CRASH_DUMP
+ def_bool X86_64 || (X86_32 && HIGHMEM)
config PHYSICAL_START
hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH v6 02/14] x86/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 ` [PATCH v6 02/14] x86/kexec: refactor for kernel/Kconfig.kexec Eric DeVolder
@ 2023-07-13 11:13 ` Leizhen (ThunderTown)
2023-08-22 6:32 ` Michal Suchánek
0 siblings, 1 reply; 17+ messages in thread
From: Leizhen (ThunderTown) @ 2023-07-13 11:13 UTC (permalink / raw)
To: Eric DeVolder, linux, catalin.marinas, will, chenhuacai, geert,
tsbogend, James.Bottomley, deller, ysato, dalias, glaubitz, tglx,
mingo, bp, dave.hansen, x86, linux-kernel, linux-arm-kernel,
linux-ia64, loongarch, linux-m68k, linux-mips, linux-parisc,
linuxppc-dev, linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, xin3.li, tj, gregkh,
tsi, bhe, hbathini, sourabhjain, boris.ostrovsky, konrad.wilk
On 2023/7/13 0:15, Eric DeVolder wrote:
> The kexec and crash kernel options are provided in the common
> kernel/Kconfig.kexec. Utilize the common options and provide
> the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
> equivalent set of KEXEC and CRASH options.
>
> Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
> ---
> arch/x86/Kconfig | 92 ++++++++++--------------------------------------
> 1 file changed, 19 insertions(+), 73 deletions(-)
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 7422db409770..9767a343f7c2 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -2040,88 +2040,34 @@ config EFI_RUNTIME_MAP
>
> source "kernel/Kconfig.hz"
>
> -config KEXEC
> - bool "kexec system call"
> - select KEXEC_CORE
> - help
> - kexec is a system call that implements the ability to shutdown your
> - current kernel, and to start another kernel. It is like a reboot
> - but it is independent of the system firmware. And like a reboot
> - you can start any kernel with it, not just Linux.
> -
> - The name comes from the similarity to the exec system call.
> -
> - It is an ongoing process to be certain the hardware in a machine
> - is properly shutdown, so do not be surprised if this code does not
> - initially work for you. As of this writing the exact hardware
> - interface is strongly in flux, so no good recommendation can be
> - made.
> -
> -config KEXEC_FILE
> - bool "kexec file based system call"
> - select KEXEC_CORE
> - select HAVE_IMA_KEXEC if IMA
> - depends on X86_64
> - depends on CRYPTO=y
> - depends on CRYPTO_SHA256=y
> - help
> - This is new version of kexec system call. This system call is
> - file based and takes file descriptors as system call argument
> - for kernel and initramfs as opposed to list of segments as
> - accepted by previous system call.
> +config ARCH_SUPPORTS_KEXEC
> + def_bool y
In v5, Joel Fernandes seems to suggest you change it to the following form:
In arch/Kconfig:
+config ARCH_SUPPORTS_KEXEC
+ bool
In arch/x86/Kconfig:
config X86
... ...
+ select ARCH_SUPPORTS_KEXEC
In arch/arm64/Kconfig:
config ARM64
... ...
+ select ARCH_SUPPORTS_KEXEC if PM_SLEEP_SMP
etc..
You can refer to ARCH_HAS_DEBUG_VIRTUAL.
>
> -config ARCH_HAS_KEXEC_PURGATORY
> - def_bool KEXEC_FILE
> +config ARCH_SUPPORTS_KEXEC_FILE
> + def_bool X86_64 && CRYPTO && CRYPTO_SHA256
>
> -config KEXEC_SIG
> - bool "Verify kernel signature during kexec_file_load() syscall"
> +config ARCH_SELECTS_KEXEC_FILE
> + def_bool y
> depends on KEXEC_FILE
> - help
> + select HAVE_IMA_KEXEC if IMA
>
> - This option makes the kexec_file_load() syscall check for a valid
> - signature of the kernel image. The image can still be loaded without
> - a valid signature unless you also enable KEXEC_SIG_FORCE, though if
> - there's a signature that we can check, then it must be valid.
> +config ARCH_HAS_KEXEC_PURGATORY
> + def_bool KEXEC_FILE
>
> - In addition to this option, you need to enable signature
> - verification for the corresponding kernel image type being
> - loaded in order for this to work.
> +config ARCH_SUPPORTS_KEXEC_SIG
> + def_bool y
>
> -config KEXEC_SIG_FORCE
> - bool "Require a valid signature in kexec_file_load() syscall"
> - depends on KEXEC_SIG
> - help
> - This option makes kernel signature verification mandatory for
> - the kexec_file_load() syscall.
> +config ARCH_SUPPORTS_KEXEC_SIG_FORCE
> + def_bool y
>
> -config KEXEC_BZIMAGE_VERIFY_SIG
> - bool "Enable bzImage signature verification support"
> - depends on KEXEC_SIG
> - depends on SIGNED_PE_FILE_VERIFICATION
> - select SYSTEM_TRUSTED_KEYRING
> - help
> - Enable bzImage signature verification support.
> +config ARCH_SUPPORTS_KEXEC_BZIMAGE_VERIFY_SIG
> + def_bool y
>
> -config CRASH_DUMP
> - bool "kernel crash dumps"
> - depends on X86_64 || (X86_32 && HIGHMEM)
> - help
> - Generate crash dump after being started by kexec.
> - This should be normally only set in special crash dump kernels
> - which are loaded in the main kernel with kexec-tools into
> - a specially reserved region and then later executed after
> - a crash by kdump/kexec. The crash dump kernel must be compiled
> - to a memory address not used by the main kernel or BIOS using
> - PHYSICAL_START, or it must be built as a relocatable image
> - (CONFIG_RELOCATABLE=y).
> - For more details see Documentation/admin-guide/kdump/kdump.rst
> +config ARCH_SUPPORTS_KEXEC_JUMP
> + def_bool y
>
> -config KEXEC_JUMP
> - bool "kexec jump"
> - depends on KEXEC && HIBERNATION
> - help
> - Jump between original kernel and kexeced kernel and invoke
> - code in physical address mode via KEXEC
> +config ARCH_SUPPORTS_CRASH_DUMP
> + def_bool X86_64 || (X86_32 && HIGHMEM)
>
> config PHYSICAL_START
> hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
>
--
Regards,
Zhen Lei
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v6 02/14] x86/kexec: refactor for kernel/Kconfig.kexec
2023-07-13 11:13 ` Leizhen (ThunderTown)
@ 2023-08-22 6:32 ` Michal Suchánek
0 siblings, 0 replies; 17+ messages in thread
From: Michal Suchánek @ 2023-08-22 6:32 UTC (permalink / raw)
To: Leizhen (ThunderTown)
Cc: Eric DeVolder, linux, catalin.marinas, will, chenhuacai, geert,
tsbogend, James.Bottomley, deller, ysato, dalias, glaubitz, tglx,
mingo, bp, dave.hansen, x86, linux-kernel, linux-arm-kernel,
linux-ia64, loongarch, linux-m68k, linux-mips, linux-parisc,
linuxppc-dev, linux-riscv, linux-s390, linux-sh, peterz,
linus.walleij, hpa, kernel, ardb, tsi, agordeev, paulmck, bhe,
masahiroy, konrad.wilk, sebastian.reichel, samitolvanen, ojeda,
juerg.haefliger, borntraeger, frederic, arnd, mhiramat, aou,
keescook, gor, anshuman.khandual, hca, xin3.li, npiggin,
rmk+kernel, paul.walmsley, boris.ostrovsky, ziy, hbathini, gregkh,
kirill.shutemov, ndesaulniers, sourabhjain, palmer, svens, tj,
akpm, rppt
Hello,
On Thu, Jul 13, 2023 at 07:13:57PM +0800, Leizhen (ThunderTown) wrote:
>
>
> On 2023/7/13 0:15, Eric DeVolder wrote:
> > The kexec and crash kernel options are provided in the common
> > kernel/Kconfig.kexec. Utilize the common options and provide
> > the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
> > equivalent set of KEXEC and CRASH options.
> >
> > Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
> > ---
> > arch/x86/Kconfig | 92 ++++++++++--------------------------------------
> > 1 file changed, 19 insertions(+), 73 deletions(-)
> >
> > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> > index 7422db409770..9767a343f7c2 100644
> > --- a/arch/x86/Kconfig
> > +++ b/arch/x86/Kconfig
> > @@ -2040,88 +2040,34 @@ config EFI_RUNTIME_MAP
> >
> > source "kernel/Kconfig.hz"
> >
> > -config KEXEC
> > - bool "kexec system call"
> > - select KEXEC_CORE
> > - help
> > - kexec is a system call that implements the ability to shutdown your
> > - current kernel, and to start another kernel. It is like a reboot
> > - but it is independent of the system firmware. And like a reboot
> > - you can start any kernel with it, not just Linux.
> > -
> > - The name comes from the similarity to the exec system call.
> > -
> > - It is an ongoing process to be certain the hardware in a machine
> > - is properly shutdown, so do not be surprised if this code does not
> > - initially work for you. As of this writing the exact hardware
> > - interface is strongly in flux, so no good recommendation can be
> > - made.
> > -
> > -config KEXEC_FILE
> > - bool "kexec file based system call"
> > - select KEXEC_CORE
> > - select HAVE_IMA_KEXEC if IMA
> > - depends on X86_64
> > - depends on CRYPTO=y
> > - depends on CRYPTO_SHA256=y
> > - help
> > - This is new version of kexec system call. This system call is
> > - file based and takes file descriptors as system call argument
> > - for kernel and initramfs as opposed to list of segments as
> > - accepted by previous system call.
> > +config ARCH_SUPPORTS_KEXEC
> > + def_bool y
>
> In v5, Joel Fernandes seems to suggest you change it to the following form:
It's unfortunate that the suggestion did not make it to the mailinglist.
> In arch/Kconfig:
> +config ARCH_SUPPORTS_KEXEC
> + bool
>
> In arch/x86/Kconfig:
> config X86
> ... ...
> + select ARCH_SUPPORTS_KEXEC
>
> In arch/arm64/Kconfig:
> config ARM64
> ... ...
> + select ARCH_SUPPORTS_KEXEC if PM_SLEEP_SMP
Which might work for this case
>
> etc..
>
> You can refer to ARCH_HAS_DEBUG_VIRTUAL.
>
> >
> > -config ARCH_HAS_KEXEC_PURGATORY
> > - def_bool KEXEC_FILE
> > +config ARCH_SUPPORTS_KEXEC_FILE
> > + def_bool X86_64 && CRYPTO && CRYPTO_SHA256
> >
> > -config KEXEC_SIG
> > - bool "Verify kernel signature during kexec_file_load() syscall"
> > +config ARCH_SELECTS_KEXEC_FILE
> > + def_bool y
> > depends on KEXEC_FILE
> > - help
> > + select HAVE_IMA_KEXEC if IMA
but not this case, at least not this trivially.
Than for consistency it looks better to keep as is.
Thanks
Michal
> >
> > - This option makes the kexec_file_load() syscall check for a valid
> > - signature of the kernel image. The image can still be loaded without
> > - a valid signature unless you also enable KEXEC_SIG_FORCE, though if
> > - there's a signature that we can check, then it must be valid.
> > +config ARCH_HAS_KEXEC_PURGATORY
> > + def_bool KEXEC_FILE
> >
> > - In addition to this option, you need to enable signature
> > - verification for the corresponding kernel image type being
> > - loaded in order for this to work.
> > +config ARCH_SUPPORTS_KEXEC_SIG
> > + def_bool y
> >
> > -config KEXEC_SIG_FORCE
> > - bool "Require a valid signature in kexec_file_load() syscall"
> > - depends on KEXEC_SIG
> > - help
> > - This option makes kernel signature verification mandatory for
> > - the kexec_file_load() syscall.
> > +config ARCH_SUPPORTS_KEXEC_SIG_FORCE
> > + def_bool y
> >
> > -config KEXEC_BZIMAGE_VERIFY_SIG
> > - bool "Enable bzImage signature verification support"
> > - depends on KEXEC_SIG
> > - depends on SIGNED_PE_FILE_VERIFICATION
> > - select SYSTEM_TRUSTED_KEYRING
> > - help
> > - Enable bzImage signature verification support.
> > +config ARCH_SUPPORTS_KEXEC_BZIMAGE_VERIFY_SIG
> > + def_bool y
> >
> > -config CRASH_DUMP
> > - bool "kernel crash dumps"
> > - depends on X86_64 || (X86_32 && HIGHMEM)
> > - help
> > - Generate crash dump after being started by kexec.
> > - This should be normally only set in special crash dump kernels
> > - which are loaded in the main kernel with kexec-tools into
> > - a specially reserved region and then later executed after
> > - a crash by kdump/kexec. The crash dump kernel must be compiled
> > - to a memory address not used by the main kernel or BIOS using
> > - PHYSICAL_START, or it must be built as a relocatable image
> > - (CONFIG_RELOCATABLE=y).
> > - For more details see Documentation/admin-guide/kdump/kdump.rst
> > +config ARCH_SUPPORTS_KEXEC_JUMP
> > + def_bool y
> >
> > -config KEXEC_JUMP
> > - bool "kexec jump"
> > - depends on KEXEC && HIBERNATION
> > - help
> > - Jump between original kernel and kexeced kernel and invoke
> > - code in physical address mode via KEXEC
> > +config ARCH_SUPPORTS_CRASH_DUMP
> > + def_bool X86_64 || (X86_32 && HIGHMEM)
> >
> > config PHYSICAL_START
> > hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
> >
>
> --
> Regards,
> Zhen Lei
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v6 03/14] arm/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 01/14] kexec: consolidate kexec and crash options into kernel/Kconfig.kexec Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 02/14] x86/kexec: refactor for kernel/Kconfig.kexec Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 04/14] ia64/kexec: " Eric DeVolder
` (10 subsequent siblings)
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
---
arch/arm/Kconfig | 29 ++++-------------------------
1 file changed, 4 insertions(+), 25 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 7a27550ff3c1..1a6a6eb48a15 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1645,20 +1645,8 @@ config XIP_DEFLATED_DATA
copied, saving some precious ROM space. A possible drawback is a
slightly longer boot delay.
-config KEXEC
- bool "Kexec system call (EXPERIMENTAL)"
- depends on (!SMP || PM_SLEEP_SMP)
- depends on MMU
- select KEXEC_CORE
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
-
- It is an ongoing process to be certain the hardware in a machine
- is properly shutdown, so do not be surprised if this code does not
- initially work for you.
+config ARCH_SUPPORTS_KEXEC
+ def_bool (!SMP || PM_SLEEP_SMP) && MMU
config ATAGS_PROC
bool "Export atags in procfs"
@@ -1668,17 +1656,8 @@ config ATAGS_PROC
Should the atags used to boot the kernel be exported in an "atags"
file in procfs. Useful with kexec.
-config CRASH_DUMP
- bool "Build kdump crash kernel (EXPERIMENTAL)"
- help
- Generate crash dump after being started by kexec. This should
- be normally only set in special crash dump kernels which are
- loaded in the main kernel with kexec-tools into a specially
- reserved region and then later executed after a crash by
- kdump/kexec. The crash dump kernel must be compiled to a
- memory address not used by the main kernel
-
- For more details see Documentation/admin-guide/kdump/kdump.rst
+config ARCH_SUPPORTS_CRASH_DUMP
+ def_bool y
config AUTO_ZRELADDR
bool "Auto calculation of the decompressed kernel image address" if !ARCH_MULTIPLATFORM
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 04/14] ia64/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
` (2 preceding siblings ...)
2023-07-12 16:15 ` [PATCH v6 03/14] arm/kexec: " Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 05/14] arm64/kexec: " Eric DeVolder
` (9 subsequent siblings)
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
---
arch/ia64/Kconfig | 28 +++++-----------------------
1 file changed, 5 insertions(+), 23 deletions(-)
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 2cd93e6bf0fe..88382f105301 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -361,31 +361,13 @@ config IA64_HP_AML_NFW
the "force" module parameter, e.g., with the "aml_nfw.force"
kernel command line option.
-config KEXEC
- bool "kexec system call"
- depends on !SMP || HOTPLUG_CPU
- select KEXEC_CORE
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
-
- The name comes from the similarity to the exec system call.
-
- It is an ongoing process to be certain the hardware in a machine
- is properly shutdown, so do not be surprised if this code does not
- initially work for you. As of this writing the exact hardware
- interface is strongly in flux, so no good recommendation can be
- made.
+endmenu
-config CRASH_DUMP
- bool "kernel crash dumps"
- depends on IA64_MCA_RECOVERY && (!SMP || HOTPLUG_CPU)
- help
- Generate crash dump after being started by kexec.
+config ARCH_SUPPORTS_KEXEC
+ def_bool !SMP || HOTPLUG_CPU
-endmenu
+config ARCH_SUPPORTS_CRASH_DUMP
+ def_bool IA64_MCA_RECOVERY && (!SMP || HOTPLUG_CPU)
menu "Power management and ACPI options"
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 05/14] arm64/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
` (3 preceding siblings ...)
2023-07-12 16:15 ` [PATCH v6 04/14] ia64/kexec: " Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 06/14] loongarch/kexec: " Eric DeVolder
` (8 subsequent siblings)
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
---
arch/arm64/Kconfig | 64 ++++++++++++----------------------------------
1 file changed, 16 insertions(+), 48 deletions(-)
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 7856c3a3e35a..3a9b06a693a9 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -1459,60 +1459,28 @@ config PARAVIRT_TIME_ACCOUNTING
If in doubt, say N here.
-config KEXEC
- depends on PM_SLEEP_SMP
- select KEXEC_CORE
- bool "kexec system call"
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
-
-config KEXEC_FILE
- bool "kexec file based system call"
- select KEXEC_CORE
- select HAVE_IMA_KEXEC if IMA
- help
- This is new version of kexec system call. This system call is
- file based and takes file descriptors as system call argument
- for kernel and initramfs as opposed to list of segments as
- accepted by previous system call.
+config ARCH_SUPPORTS_KEXEC
+ def_bool PM_SLEEP_SMP
-config KEXEC_SIG
- bool "Verify kernel signature during kexec_file_load() syscall"
- depends on KEXEC_FILE
- help
- Select this option to verify a signature with loaded kernel
- image. If configured, any attempt of loading a image without
- valid signature will fail.
+config ARCH_SUPPORTS_KEXEC_FILE
+ def_bool y
- In addition to that option, you need to enable signature
- verification for the corresponding kernel image type being
- loaded in order for this to work.
+config ARCH_SELECTS_KEXEC_FILE
+ def_bool y
+ depends on KEXEC_FILE
+ select HAVE_IMA_KEXEC if IMA
-config KEXEC_IMAGE_VERIFY_SIG
- bool "Enable Image signature verification support"
- default y
- depends on KEXEC_SIG
- depends on EFI && SIGNED_PE_FILE_VERIFICATION
- help
- Enable Image signature verification support.
+config ARCH_SUPPORTS_KEXEC_SIG
+ def_bool y
-comment "Support for PE file signature verification disabled"
- depends on KEXEC_SIG
- depends on !EFI || !SIGNED_PE_FILE_VERIFICATION
+config ARCH_SUPPORTS_KEXEC_IMAGE_VERIFY_SIG
+ def_bool y
-config CRASH_DUMP
- bool "Build kdump crash kernel"
- help
- Generate crash dump after being started by kexec. This should
- be normally only set in special crash dump kernels which are
- loaded in the main kernel with kexec-tools into a specially
- reserved region and then later executed after a crash by
- kdump/kexec.
+config ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG
+ def_bool y
- For more details see Documentation/admin-guide/kdump/kdump.rst
+config ARCH_SUPPORTS_CRASH_DUMP
+ def_bool y
config TRANS_TABLE
def_bool y
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 06/14] loongarch/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
` (4 preceding siblings ...)
2023-07-12 16:15 ` [PATCH v6 05/14] arm64/kexec: " Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 07/14] m68k/kexec: " Eric DeVolder
` (7 subsequent siblings)
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
---
arch/loongarch/Kconfig | 26 +++++++-------------------
1 file changed, 7 insertions(+), 19 deletions(-)
diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig
index e55511af4c77..397203e18800 100644
--- a/arch/loongarch/Kconfig
+++ b/arch/loongarch/Kconfig
@@ -537,28 +537,16 @@ config CPU_HAS_PREFETCH
bool
default y
-config KEXEC
- bool "Kexec system call"
- select KEXEC_CORE
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
+config ARCH_SUPPORTS_KEXEC
+ def_bool y
- The name comes from the similarity to the exec system call.
+config ARCH_SUPPORTS_CRASH_DUMP
+ def_bool y
-config CRASH_DUMP
- bool "Build kdump crash kernel"
+config ARCH_SELECTS_CRASH_DUMP
+ def_bool y
+ depends on CRASH_DUMP
select RELOCATABLE
- help
- Generate crash dump after being started by kexec. This should
- be normally only set in special crash dump kernels which are
- loaded in the main kernel with kexec-tools into a specially
- reserved region and then later executed after a crash by
- kdump/kexec.
-
- For more details see Documentation/admin-guide/kdump/kdump.rst
config RELOCATABLE
bool "Relocatable kernel"
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 07/14] m68k/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
` (5 preceding siblings ...)
2023-07-12 16:15 ` [PATCH v6 06/14] loongarch/kexec: " Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 08/14] mips/kexec: " Eric DeVolder
` (6 subsequent siblings)
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
arch/m68k/Kconfig | 19 ++-----------------
1 file changed, 2 insertions(+), 17 deletions(-)
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index dc792b321f1e..3e318bf9504c 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -89,23 +89,8 @@ config MMU_SUN3
bool
depends on MMU && !MMU_MOTOROLA && !MMU_COLDFIRE
-config KEXEC
- bool "kexec system call"
- depends on M68KCLASSIC && MMU
- select KEXEC_CORE
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
-
- The name comes from the similarity to the exec system call.
-
- It is an ongoing process to be certain the hardware in a machine
- is properly shutdown, so do not be surprised if this code does not
- initially work for you. As of this writing the exact hardware
- interface is strongly in flux, so no good recommendation can be
- made.
+config ARCH_SUPPORTS_KEXEC
+ def_bool M68KCLASSIC && MMU
config BOOTINFO_PROC
bool "Export bootinfo in procfs"
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 08/14] mips/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
` (6 preceding siblings ...)
2023-07-12 16:15 ` [PATCH v6 07/14] m68k/kexec: " Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 09/14] parisc/kexec: " Eric DeVolder
` (5 subsequent siblings)
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
Acked-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
---
arch/mips/Kconfig | 32 +++++---------------------------
1 file changed, 5 insertions(+), 27 deletions(-)
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index fc6fba925aea..bc8421859006 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -2878,33 +2878,11 @@ config HZ
config SCHED_HRTICK
def_bool HIGH_RES_TIMERS
-config KEXEC
- bool "Kexec system call"
- select KEXEC_CORE
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
-
- The name comes from the similarity to the exec system call.
-
- It is an ongoing process to be certain the hardware in a machine
- is properly shutdown, so do not be surprised if this code does not
- initially work for you. As of this writing the exact hardware
- interface is strongly in flux, so no good recommendation can be
- made.
-
-config CRASH_DUMP
- bool "Kernel crash dumps"
- help
- Generate crash dump after being started by kexec.
- This should be normally only set in special crash dump kernels
- which are loaded in the main kernel with kexec-tools into
- a specially reserved region and then later executed after
- a crash by kdump/kexec. The crash dump kernel must be compiled
- to a memory address not used by the main kernel or firmware using
- PHYSICAL_START.
+config ARCH_SUPPORTS_KEXEC
+ def_bool y
+
+config ARCH_SUPPORTS_CRASH_DUMP
+ def_bool y
config PHYSICAL_START
hex "Physical address where the kernel is loaded"
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 09/14] parisc/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
` (7 preceding siblings ...)
2023-07-12 16:15 ` [PATCH v6 08/14] mips/kexec: " Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 10/14] powerpc/kexec: " Eric DeVolder
` (4 subsequent siblings)
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
---
arch/parisc/Kconfig | 34 +++++++++++-----------------------
1 file changed, 11 insertions(+), 23 deletions(-)
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 4cb46d5c64a2..2ef6843aae60 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -339,29 +339,17 @@ config NR_CPUS
default "8" if 64BIT
default "16"
-config KEXEC
- bool "Kexec system call"
- select KEXEC_CORE
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
-
- It is an ongoing process to be certain the hardware in a machine
- shutdown, so do not be surprised if this code does not
- initially work for you.
-
-config KEXEC_FILE
- bool "kexec file based system call"
- select KEXEC_CORE
- select KEXEC_ELF
- help
- This enables the kexec_file_load() System call. This is
- file based and takes file descriptors as system call argument
- for kernel and initramfs as opposed to list of segments as
- accepted by previous system call.
-
endmenu
+config ARCH_SUPPORTS_KEXEC
+ def_bool y
+
+config ARCH_SUPPORTS_KEXEC_FILE
+ def_bool y
+
+config ARCH_SELECTS_KEXEC_FILE
+ def_bool y
+ depends on KEXEC_FILE
+ select KEXEC_ELF
+
source "drivers/parisc/Kconfig"
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 10/14] powerpc/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
` (8 preceding siblings ...)
2023-07-12 16:15 ` [PATCH v6 09/14] parisc/kexec: " Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 11/14] riscv/kexec: " Eric DeVolder
` (3 subsequent siblings)
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
Reviewed-by: Sourabh Jain <sourabhjain@linux.ibm.com>
---
arch/powerpc/Kconfig | 55 ++++++++++++++------------------------------
1 file changed, 17 insertions(+), 38 deletions(-)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 0b1172cbeccb..1695a71777f0 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -589,41 +589,21 @@ config PPC64_SUPPORTS_MEMORY_FAILURE
default "y" if PPC_POWERNV
select ARCH_SUPPORTS_MEMORY_FAILURE
-config KEXEC
- bool "kexec system call"
- depends on PPC_BOOK3S || PPC_E500 || (44x && !SMP)
- select KEXEC_CORE
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
-
- The name comes from the similarity to the exec system call.
-
- It is an ongoing process to be certain the hardware in a machine
- is properly shutdown, so do not be surprised if this code does not
- initially work for you. As of this writing the exact hardware
- interface is strongly in flux, so no good recommendation can be
- made.
-
-config KEXEC_FILE
- bool "kexec file based system call"
- select KEXEC_CORE
- select HAVE_IMA_KEXEC if IMA
- select KEXEC_ELF
- depends on PPC64
- depends on CRYPTO=y
- depends on CRYPTO_SHA256=y
- help
- This is a new version of the kexec system call. This call is
- file based and takes in file descriptors as system call arguments
- for kernel and initramfs as opposed to a list of segments as is the
- case for the older kexec call.
+config ARCH_SUPPORTS_KEXEC
+ def_bool PPC_BOOK3S || PPC_E500 || (44x && !SMP)
+
+config ARCH_SUPPORTS_KEXEC_FILE
+ def_bool PPC64 && CRYPTO=y && CRYPTO_SHA256=y
config ARCH_HAS_KEXEC_PURGATORY
def_bool KEXEC_FILE
+config ARCH_SELECTS_KEXEC_FILE
+ def_bool y
+ depends on KEXEC_FILE
+ select KEXEC_ELF
+ select HAVE_IMA_KEXEC if IMA
+
config PPC64_BIG_ENDIAN_ELF_ABI_V2
# Option is available to BFD, but LLD does not support ELFv1 so this is
# always true there.
@@ -683,14 +663,13 @@ config RELOCATABLE_TEST
loaded at, which tends to be non-zero and therefore test the
relocation code.
-config CRASH_DUMP
- bool "Build a dump capture kernel"
- depends on PPC64 || PPC_BOOK3S_32 || PPC_85xx || (44x && !SMP)
+config ARCH_SUPPORTS_CRASH_DUMP
+ def_bool PPC64 || PPC_BOOK3S_32 || PPC_85xx || (44x && !SMP)
+
+config ARCH_SELECTS_CRASH_DUMP
+ def_bool y
+ depends on CRASH_DUMP
select RELOCATABLE if PPC64 || 44x || PPC_85xx
- help
- Build a kernel suitable for use as a dump capture kernel.
- The same kernel binary can be used as production kernel and dump
- capture kernel.
config FA_DUMP
bool "Firmware-assisted dump"
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 11/14] riscv/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
` (9 preceding siblings ...)
2023-07-12 16:15 ` [PATCH v6 10/14] powerpc/kexec: " Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 12/14] s390/kexec: " Eric DeVolder
` (2 subsequent siblings)
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
---
arch/riscv/Kconfig | 44 +++++++++++++-------------------------------
1 file changed, 13 insertions(+), 31 deletions(-)
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 4c07b9189c86..23d0fbbe1367 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -650,48 +650,30 @@ config RISCV_BOOT_SPINWAIT
If unsure what to do here, say N.
-config KEXEC
- bool "Kexec system call"
- depends on MMU
+config ARCH_SUPPORTS_KEXEC
+ def_bool MMU
+
+config ARCH_SELECTS_KEXEC
+ def_bool y
+ depends on KEXEC
select HOTPLUG_CPU if SMP
- select KEXEC_CORE
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
- The name comes from the similarity to the exec system call.
+config ARCH_SUPPORTS_KEXEC_FILE
+ def_bool 64BIT && MMU
-config KEXEC_FILE
- bool "kexec file based systmem call"
- depends on 64BIT && MMU
+config ARCH_SELECTS_KEXEC_FILE
+ def_bool y
+ depends on KEXEC_FILE
select HAVE_IMA_KEXEC if IMA
- select KEXEC_CORE
select KEXEC_ELF
- help
- This is new version of kexec system call. This system call is
- file based and takes file descriptors as system call argument
- for kernel and initramfs as opposed to list of segments as
- accepted by previous system call.
-
- If you don't know what to do here, say Y.
config ARCH_HAS_KEXEC_PURGATORY
def_bool KEXEC_FILE
depends on CRYPTO=y
depends on CRYPTO_SHA256=y
-config CRASH_DUMP
- bool "Build kdump crash kernel"
- help
- Generate crash dump after being started by kexec. This should
- be normally only set in special crash dump kernels which are
- loaded in the main kernel with kexec-tools into a specially
- reserved region and then later executed after a crash by
- kdump/kexec.
-
- For more details see Documentation/admin-guide/kdump/kdump.rst
+config ARCH_SUPPORTS_CRASH_DUMP
+ def_bool y
config COMPAT
bool "Kernel support for 32-bit U-mode"
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 12/14] s390/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
` (10 preceding siblings ...)
2023-07-12 16:15 ` [PATCH v6 11/14] riscv/kexec: " Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 13/14] sh/kexec: " Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 14/14] kexec: rename ARCH_HAS_KEXEC_PURGATORY Eric DeVolder
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
---
arch/s390/Kconfig | 69 ++++++++++++++++-------------------------------
1 file changed, 23 insertions(+), 46 deletions(-)
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 5b39918b7042..40beaf1f3d73 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -213,6 +213,7 @@ config S390
select HAVE_VIRT_CPU_ACCOUNTING_IDLE
select IOMMU_HELPER if PCI
select IOMMU_SUPPORT if PCI
+ select KEXEC
select MMU_GATHER_MERGE_VMAS
select MMU_GATHER_NO_GATHER
select MMU_GATHER_RCU_TABLE_FREE
@@ -244,6 +245,28 @@ config PGTABLE_LEVELS
source "kernel/livepatch/Kconfig"
+config ARCH_DEFAULT_KEXEC
+ def_bool y
+
+config ARCH_SUPPORTS_KEXEC
+ def_bool y
+
+config ARCH_SUPPORTS_KEXEC_FILE
+ def_bool CRYPTO && CRYPTO_SHA256 && CRYPTO_SHA256_S390
+
+config ARCH_SUPPORTS_KEXEC_SIG
+ def_bool MODULE_SIG_FORMAT
+
+config ARCH_HAS_KEXEC_PURGATORY
+ def_bool KEXEC_FILE
+
+config ARCH_SUPPORTS_CRASH_DUMP
+ def_bool y
+ help
+ Refer to <file:Documentation/s390/zfcpdump.rst> for more details on this.
+ This option also enables s390 zfcpdump.
+ See also <file:Documentation/s390/zfcpdump.rst>
+
menu "Processor type and features"
config HAVE_MARCH_Z10_FEATURES
@@ -482,36 +505,6 @@ config SCHED_TOPOLOGY
source "kernel/Kconfig.hz"
-config KEXEC
- def_bool y
- select KEXEC_CORE
-
-config KEXEC_FILE
- bool "kexec file based system call"
- select KEXEC_CORE
- depends on CRYPTO
- depends on CRYPTO_SHA256
- depends on CRYPTO_SHA256_S390
- help
- Enable the kexec file based system call. In contrast to the normal
- kexec system call this system call takes file descriptors for the
- kernel and initramfs as arguments.
-
-config ARCH_HAS_KEXEC_PURGATORY
- def_bool y
- depends on KEXEC_FILE
-
-config KEXEC_SIG
- bool "Verify kernel signature during kexec_file_load() syscall"
- depends on KEXEC_FILE && MODULE_SIG_FORMAT
- help
- This option makes kernel signature verification mandatory for
- the kexec_file_load() syscall.
-
- In addition to that option, you need to enable signature
- verification for the corresponding kernel image type being
- loaded in order for this to work.
-
config KERNEL_NOBP
def_bool n
prompt "Enable modified branch prediction for the kernel by default"
@@ -733,22 +726,6 @@ config VFIO_AP
endmenu
-menu "Dump support"
-
-config CRASH_DUMP
- bool "kernel crash dumps"
- select KEXEC
- help
- Generate crash dump after being started by kexec.
- Crash dump kernels are loaded in the main kernel with kexec-tools
- into a specially reserved region and then later executed after
- a crash by kdump/kexec.
- Refer to <file:Documentation/s390/zfcpdump.rst> for more details on this.
- This option also enables s390 zfcpdump.
- See also <file:Documentation/s390/zfcpdump.rst>
-
-endmenu
-
config CCW
def_bool y
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 13/14] sh/kexec: refactor for kernel/Kconfig.kexec
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
` (11 preceding siblings ...)
2023-07-12 16:15 ` [PATCH v6 12/14] s390/kexec: " Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
2023-07-12 16:15 ` [PATCH v6 14/14] kexec: rename ARCH_HAS_KEXEC_PURGATORY Eric DeVolder
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_SUPPORTS_ and ARCH_SELECTS_ entries to recreate the
equivalent set of KEXEC and CRASH options.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
Acked-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
---
arch/sh/Kconfig | 46 ++++++++--------------------------------------
1 file changed, 8 insertions(+), 38 deletions(-)
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 2b3ce4fd3956..1cf6603781c7 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -548,44 +548,14 @@ menu "Kernel features"
source "kernel/Kconfig.hz"
-config KEXEC
- bool "kexec system call (EXPERIMENTAL)"
- depends on MMU
- select KEXEC_CORE
- help
- kexec is a system call that implements the ability to shutdown your
- current kernel, and to start another kernel. It is like a reboot
- but it is independent of the system firmware. And like a reboot
- you can start any kernel with it, not just Linux.
-
- The name comes from the similarity to the exec system call.
-
- It is an ongoing process to be certain the hardware in a machine
- is properly shutdown, so do not be surprised if this code does not
- initially work for you. As of this writing the exact hardware
- interface is strongly in flux, so no good recommendation can be
- made.
-
-config CRASH_DUMP
- bool "kernel crash dumps (EXPERIMENTAL)"
- depends on BROKEN_ON_SMP
- help
- Generate crash dump after being started by kexec.
- This should be normally only set in special crash dump kernels
- which are loaded in the main kernel with kexec-tools into
- a specially reserved region and then later executed after
- a crash by kdump/kexec. The crash dump kernel must be compiled
- to a memory address not used by the main kernel using
- PHYSICAL_START.
-
- For more details see Documentation/admin-guide/kdump/kdump.rst
-
-config KEXEC_JUMP
- bool "kexec jump (EXPERIMENTAL)"
- depends on KEXEC && HIBERNATION
- help
- Jump between original kernel and kexeced kernel and invoke
- code via KEXEC
+config ARCH_SUPPORTS_KEXEC
+ def_bool MMU
+
+config ARCH_SUPPORTS_CRASH_DUMP
+ def_bool BROKEN_ON_SMP
+
+config ARCH_SUPPORTS_KEXEC_JUMP
+ def_bool y
config PHYSICAL_START
hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v6 14/14] kexec: rename ARCH_HAS_KEXEC_PURGATORY
2023-07-12 16:15 [PATCH v6 00/14] refactor Kconfig to consolidate KEXEC and CRASH options Eric DeVolder
` (12 preceding siblings ...)
2023-07-12 16:15 ` [PATCH v6 13/14] sh/kexec: " Eric DeVolder
@ 2023-07-12 16:15 ` Eric DeVolder
13 siblings, 0 replies; 17+ messages in thread
From: Eric DeVolder @ 2023-07-12 16:15 UTC (permalink / raw)
To: linux, catalin.marinas, will, chenhuacai, geert, tsbogend,
James.Bottomley, deller, ysato, dalias, glaubitz, tglx, mingo, bp,
dave.hansen, x86, linux-kernel, linux-arm-kernel, linux-ia64,
loongarch, linux-m68k, linux-mips, linux-parisc, linuxppc-dev,
linux-riscv, linux-s390, linux-sh
Cc: kernel, mpe, npiggin, christophe.leroy, paul.walmsley, palmer,
aou, hca, gor, agordeev, borntraeger, svens, hpa, keescook,
paulmck, peterz, frederic, akpm, ardb, samitolvanen,
juerg.haefliger, arnd, rmk+kernel, linus.walleij,
sebastian.reichel, rppt, kirill.shutemov, anshuman.khandual, ziy,
masahiroy, ndesaulniers, mhiramat, ojeda, thunder.leizhen,
xin3.li, tj, gregkh, tsi, bhe, hbathini, sourabhjain,
eric.devolder, boris.ostrovsky, konrad.wilk
The Kconfig refactor to consolidate KEXEC and CRASH options utilized
option names of the form ARCH_SUPPORTS_<option>. Thus rename the
ARCH_HAS_KEXEC_PURGATORY to ARCH_SUPPORTS_KEXEC_PURGATORY to follow
the same.
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
---
arch/powerpc/Kconfig | 2 +-
arch/riscv/Kbuild | 2 +-
arch/riscv/Kconfig | 2 +-
arch/riscv/kernel/elf_kexec.c | 4 ++--
arch/s390/Kbuild | 2 +-
arch/s390/Kconfig | 2 +-
arch/x86/Kconfig | 2 +-
kernel/kexec_file.c | 6 +++---
8 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 1695a71777f0..7709b62e6843 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -595,7 +595,7 @@ config ARCH_SUPPORTS_KEXEC
config ARCH_SUPPORTS_KEXEC_FILE
def_bool PPC64 && CRYPTO=y && CRYPTO_SHA256=y
-config ARCH_HAS_KEXEC_PURGATORY
+config ARCH_SUPPORTS_KEXEC_PURGATORY
def_bool KEXEC_FILE
config ARCH_SELECTS_KEXEC_FILE
diff --git a/arch/riscv/Kbuild b/arch/riscv/Kbuild
index afa83e307a2e..d25ad1c19f88 100644
--- a/arch/riscv/Kbuild
+++ b/arch/riscv/Kbuild
@@ -5,7 +5,7 @@ obj-$(CONFIG_BUILTIN_DTB) += boot/dts/
obj-y += errata/
obj-$(CONFIG_KVM) += kvm/
-obj-$(CONFIG_ARCH_HAS_KEXEC_PURGATORY) += purgatory/
+obj-$(CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY) += purgatory/
# for cleaning
subdir- += boot
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 23d0fbbe1367..a39c5d03f59c 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -667,7 +667,7 @@ config ARCH_SELECTS_KEXEC_FILE
select HAVE_IMA_KEXEC if IMA
select KEXEC_ELF
-config ARCH_HAS_KEXEC_PURGATORY
+config ARCH_SUPPORTS_KEXEC_PURGATORY
def_bool KEXEC_FILE
depends on CRYPTO=y
depends on CRYPTO_SHA256=y
diff --git a/arch/riscv/kernel/elf_kexec.c b/arch/riscv/kernel/elf_kexec.c
index 5372b708fae2..cc556beb293a 100644
--- a/arch/riscv/kernel/elf_kexec.c
+++ b/arch/riscv/kernel/elf_kexec.c
@@ -260,7 +260,7 @@ static void *elf_kexec_load(struct kimage *image, char *kernel_buf,
cmdline = modified_cmdline;
}
-#ifdef CONFIG_ARCH_HAS_KEXEC_PURGATORY
+#ifdef CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY
/* Add purgatory to the image */
kbuf.top_down = true;
kbuf.mem = KEXEC_BUF_MEM_UNKNOWN;
@@ -274,7 +274,7 @@ static void *elf_kexec_load(struct kimage *image, char *kernel_buf,
sizeof(kernel_start), 0);
if (ret)
pr_err("Error update purgatory ret=%d\n", ret);
-#endif /* CONFIG_ARCH_HAS_KEXEC_PURGATORY */
+#endif /* CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY */
/* Add the initrd to the image */
if (initrd != NULL) {
diff --git a/arch/s390/Kbuild b/arch/s390/Kbuild
index 76e362277179..48a3588d703c 100644
--- a/arch/s390/Kbuild
+++ b/arch/s390/Kbuild
@@ -7,7 +7,7 @@ obj-$(CONFIG_S390_HYPFS_FS) += hypfs/
obj-$(CONFIG_APPLDATA_BASE) += appldata/
obj-y += net/
obj-$(CONFIG_PCI) += pci/
-obj-$(CONFIG_ARCH_HAS_KEXEC_PURGATORY) += purgatory/
+obj-$(CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY) += purgatory/
# for cleaning
subdir- += boot tools
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 40beaf1f3d73..ab723218c0fb 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -257,7 +257,7 @@ config ARCH_SUPPORTS_KEXEC_FILE
config ARCH_SUPPORTS_KEXEC_SIG
def_bool MODULE_SIG_FORMAT
-config ARCH_HAS_KEXEC_PURGATORY
+config ARCH_SUPPORTS_KEXEC_PURGATORY
def_bool KEXEC_FILE
config ARCH_SUPPORTS_CRASH_DUMP
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 9767a343f7c2..fedc6dddd743 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2051,7 +2051,7 @@ config ARCH_SELECTS_KEXEC_FILE
depends on KEXEC_FILE
select HAVE_IMA_KEXEC if IMA
-config ARCH_HAS_KEXEC_PURGATORY
+config ARCH_SUPPORTS_KEXEC_PURGATORY
def_bool KEXEC_FILE
config ARCH_SUPPORTS_KEXEC_SIG
diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c
index 881ba0d1714c..dd115571f8fc 100644
--- a/kernel/kexec_file.c
+++ b/kernel/kexec_file.c
@@ -685,7 +685,7 @@ static int kexec_calculate_store_digests(struct kimage *image)
struct kexec_sha_region *sha_regions;
struct purgatory_info *pi = &image->purgatory_info;
- if (!IS_ENABLED(CONFIG_ARCH_HAS_KEXEC_PURGATORY))
+ if (!IS_ENABLED(CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY))
return 0;
zero_buf = __va(page_to_pfn(ZERO_PAGE(0)) << PAGE_SHIFT);
@@ -790,7 +790,7 @@ static int kexec_calculate_store_digests(struct kimage *image)
return ret;
}
-#ifdef CONFIG_ARCH_HAS_KEXEC_PURGATORY
+#ifdef CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY
/*
* kexec_purgatory_setup_kbuf - prepare buffer to load purgatory.
* @pi: Purgatory to be loaded.
@@ -1150,7 +1150,7 @@ int kexec_purgatory_get_set_symbol(struct kimage *image, const char *name,
return 0;
}
-#endif /* CONFIG_ARCH_HAS_KEXEC_PURGATORY */
+#endif /* CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY */
int crash_exclude_mem_range(struct crash_mem *mem,
unsigned long long mstart, unsigned long long mend)
--
2.31.1
^ permalink raw reply related [flat|nested] 17+ messages in thread