Re: [PATCH v1 01/21] kexec: consolidate kexec and crash options into kernel/Kconfig.kexec

Eric DeVolder <[email protected]>
Newsgroups gmane.linux.ports.riscv,gmane.linux.kernel,gmane.linux.ports.arm.kernel,gmane.linux.ports.ia64,gmane.linux.ports.mips,gmane.linux.ports.parisc,gmane.linux.ports.ppc64.devel,gmane.linux.ports.sh.devel
Message-ID <[email protected]>

On 6/13/23 20:19, Leizhen (ThunderTown) wrote:
> 
> 
> On 2023/6/13 1:27, Eric DeVolder wrote:
>> 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" where all the kexec and
>> crash options that were once in the arch-dependent submenu "Processor
>> type and features" are now consolidated.
>>
>> 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_HAS_<option> config options.
>>
>> Architectures can utilize the new ARCH_SUPPORTS_<option> config
>> options to specify additional components when <option> is enabled.
>>
>> To summarize, the ARCH_HAS_<option> permits the <option> to be
>> enabled, and the ARCH_SUPPORTS_<option> handles side effects (ie.
>> select statements).
>>
>> Signed-off-by: Eric DeVolder <[email protected]>
>> ---
>>   arch/Kconfig         |  13 ------
>>   init/Kconfig         |   2 +
>>   kernel/Kconfig.kexec | 103 +++++++++++++++++++++++++++++++++++++++++++
>>   3 files changed, 105 insertions(+), 13 deletions(-)
>>   create mode 100644 kernel/Kconfig.kexec
>>
>> diff --git a/arch/Kconfig b/arch/Kconfig
>> index 205fd23e0cad..a37730679730 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 32c24950c4ce..4424447e23a5 100644
>> --- a/init/Kconfig
>> +++ b/init/Kconfig
>> @@ -1917,6 +1917,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..660048099865
>> --- /dev/null
>> +++ b/kernel/Kconfig.kexec
>> @@ -0,0 +1,103 @@
>> +# 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_HAS_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.
> 
> "kernel.  It is like", "firmware.   And like"
> 
> A few more spaces, I don't know the original author's intention, perhaps can be removed.
> 
I'll remove the extra spaces.

>> +
>> +	  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_HAS_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 previous system call.
>> +
>> +config KEXEC_SIG
>> +	bool "Verify kernel signature during kexec_file_load() syscall"
>> +	depends on KEXEC_FILE && MODULE_SIG_FORMAT
> 
> I see that there is no "depends on MODULE_SIG_FORMAT" on x86 and arm64.
> 
Good catch, I'll remove MODULE_SIG_FORMAT and place it on just s390 (which is the only arch that had 
it this way).

>> +	help
>> +
> 
> This blank line can be deleted.
> 
I will remove it.

Thank you, Zhen!
eric

>> +	  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 KEXEC_SIG
>> +	help
>> +	  This option makes kernel signature verification mandatory for
>> +	  the kexec_file_load() syscall.
>> +
>> +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 KEXEC_JUMP
>> +	bool "kexec jump"
>> +	depends on KEXEC && HIBERNATION
>> +	depends on ARCH_HAS_KEXEC_JUMP
>> +	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_HAS_CRASH_DUMP
>> +	select KEXEC_CORE
>> +	select CRASH_CORE
>> +	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
>>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.