diff mbox series

[v3,11/13] riscv/kexec: refactor for kernel/Kconfig.kexec

Message ID 20230626161332.183214-12-eric.devolder@oracle.com (mailing list archive)
State New, archived
Headers show
Series refactor Kconfig to consolidate KEXEC and CRASH options | expand

Commit Message

Eric DeVolder June 26, 2023, 4:13 p.m. UTC
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/riscv/Kconfig | 48 ++++++++++++++--------------------------------
 1 file changed, 14 insertions(+), 34 deletions(-)

Comments

Conor Dooley June 28, 2023, 8:20 a.m. UTC | #1
Hey Eric,

On Mon, Jun 26, 2023 at 12:13:30PM -0400, 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.

I find this diff a little hard to follow (since the other half off the
change is in another patch), so it may be me missing something, but are
you sure?

> 
> Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
> ---
>  arch/riscv/Kconfig | 48 ++++++++++++++--------------------------------
>  1 file changed, 14 insertions(+), 34 deletions(-)
> 
> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> index 5966ad97c30c..c484abd9bbfd 100644
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -585,48 +585,28 @@ 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 && CRYPTO=y && CRYPTO_SHA256=y

This looks like a change to me. Previously, only KEXEC_PURGATORY
required these crypto options to be like so, but now KEXEC_FILE needs
them too.

What am I missing?

Cheers,
Conor.

>  
> -config KEXEC_FILE
> -	bool "kexec file based systmem call"
> -	depends on 64BIT && MMU
> -	select HAVE_IMA_KEXEC if IMA
> -	select KEXEC_CORE
> +config ARCH_SELECTS_KEXEC_FILE
> +	def_bool y
> +	depends on KEXEC_FILE
>  	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.
> +	select HAVE_IMA_KEXEC if IMA
>  
>  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
>
Eric DeVolder June 28, 2023, 1:30 p.m. UTC | #2
On 6/28/23 03:20, Conor Dooley wrote:
> Hey Eric,
> 
> On Mon, Jun 26, 2023 at 12:13:30PM -0400, 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.
> 
> I find this diff a little hard to follow (since the other half off the
> change is in another patch), so it may be me missing something, but are
> you sure?
> 
>>
>> Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
>> ---
>>   arch/riscv/Kconfig | 48 ++++++++++++++--------------------------------
>>   1 file changed, 14 insertions(+), 34 deletions(-)
>>
>> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
>> index 5966ad97c30c..c484abd9bbfd 100644
>> --- a/arch/riscv/Kconfig
>> +++ b/arch/riscv/Kconfig
>> @@ -585,48 +585,28 @@ 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 && CRYPTO=y && CRYPTO_SHA256=y
> 
> This looks like a change to me. Previously, only KEXEC_PURGATORY
> required these crypto options to be like so, but now KEXEC_FILE needs
> them too.
> 
> What am I missing?
Conor,
Thanks for looking at this! Indeed I erroneously applied the CRYPTO=y && CRYPTO_SHA256=y
to KEXEC_FILE rather than PURGATORY. I will correct for v4!
Thanks!
eric

> 
> Cheers,
> Conor.
> 
>>   
>> -config KEXEC_FILE
>> -	bool "kexec file based systmem call"
>> -	depends on 64BIT && MMU
>> -	select HAVE_IMA_KEXEC if IMA
>> -	select KEXEC_CORE
>> +config ARCH_SELECTS_KEXEC_FILE
>> +	def_bool y
>> +	depends on KEXEC_FILE
>>   	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.
>> +	select HAVE_IMA_KEXEC if IMA
>>   
>>   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
>>
diff mbox series

Patch

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 5966ad97c30c..c484abd9bbfd 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -585,48 +585,28 @@  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 && CRYPTO=y && CRYPTO_SHA256=y
 
-config KEXEC_FILE
-	bool "kexec file based systmem call"
-	depends on 64BIT && MMU
-	select HAVE_IMA_KEXEC if IMA
-	select KEXEC_CORE
+config ARCH_SELECTS_KEXEC_FILE
+	def_bool y
+	depends on KEXEC_FILE
 	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.
+	select HAVE_IMA_KEXEC if IMA
 
 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"