The kexec and crash kernel options are provided in the common
kernel/Kconfig.kexec. Utilize the common options and provide
the ARCH_HAS_ and ARCH_SUPPORTS_ 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 bff5820b7cda..36f2fe0cc8a5 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -588,41 +588,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_HAS_KEXEC
+ def_bool PPC_BOOK3S || PPC_E500 || (44x && !SMP)
+
+config ARCH_HAS_KEXEC_FILE
+ def_bool PPC64 && CRYPTO && CRYPTO_SHA256
config ARCH_HAS_KEXEC_PURGATORY
def_bool KEXEC_FILE
+config ARCH_SUPPORTS_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
bool "Build big-endian kernel using ELF ABI V2 (EXPERIMENTAL)"
depends on PPC64 && CPU_BIG_ENDIAN
@@ -682,14 +662,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_HAS_CRASH_DUMP
+ def_bool PPC64 || PPC_BOOK3S_32 || PPC_85xx || (44x && !SMP)
+
+config ARCH_SUPPORTS_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
Eric DeVolder <eric.devolder@oracle.com> writes: > The kexec and crash kernel options are provided in the common > kernel/Kconfig.kexec. Utilize the common options and provide > the ARCH_HAS_ and ARCH_SUPPORTS_ 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 bff5820b7cda..36f2fe0cc8a5 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -588,41 +588,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 ... > + > +config ARCH_HAS_KEXEC_FILE > + def_bool PPC64 && CRYPTO && CRYPTO_SHA256 The =y's got lost here. I think they were both meaningful, because both options are tristate. So this previously required them to be built-in (=y), whereas after your patch it will allow them to be modules. I don't know for sure that those options need to be built-in, but that's what the code does now, so this patch shouldn't change it, at least without an explanation. cheers
On Thu, Jun 15, 2023 at 01:34:25PM +1000, Michael Ellerman wrote: > Eric DeVolder <eric.devolder@oracle.com> writes: > > -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 > ... > > + > > +config ARCH_HAS_KEXEC_FILE > > + def_bool PPC64 && CRYPTO && CRYPTO_SHA256 > > The =y's got lost here. > > I think they were both meaningful, because both options are tristate. So > this previously required them to be built-in (=y), whereas after your > patch it will allow them to be modules. > > I don't know for sure that those options need to be built-in, but that's > what the code does now, so this patch shouldn't change it, at least > without an explanation. This patch shouldn't change it at all, period. If you want to change it (and that sounds like a good idea, if it is possible anyway), that should be a separate patch. Segher
On 6/14/23 22:34, Michael Ellerman wrote: > Eric DeVolder <eric.devolder@oracle.com> writes: > >> The kexec and crash kernel options are provided in the common >> kernel/Kconfig.kexec. Utilize the common options and provide >> the ARCH_HAS_ and ARCH_SUPPORTS_ 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 bff5820b7cda..36f2fe0cc8a5 100644 >> --- a/arch/powerpc/Kconfig >> +++ b/arch/powerpc/Kconfig >> @@ -588,41 +588,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 > ... >> + >> +config ARCH_HAS_KEXEC_FILE >> + def_bool PPC64 && CRYPTO && CRYPTO_SHA256 > > The =y's got lost here. > > I think they were both meaningful, because both options are tristate. So > this previously required them to be built-in (=y), whereas after your > patch it will allow them to be modules. > > I don't know for sure that those options need to be built-in, but that's > what the code does now, so this patch shouldn't change it, at least > without an explanation. > > cheers Thanks Michael, I've applied =y's. Good catch! eric
© 2016 - 2026 Red Hat, Inc.