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

Eric DeVolder
2023-06-28T13:36:36Z

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
>>