On Thu, Nov 23, 2023 at 7:37 AM Baoquan He <bhe@xxxxxxxxxx> wrote: > > Ignat Korchagin complained that a potential config regression was > introduced by commit 89cde455915f ("kexec: consolidate kexec and > crash options into kernel/Kconfig.kexec"). Before the commit, > CONFIG_CRASH_DUMP has no dependency on CONFIG_KEXEC. After the commit, > CRASH_DUMP selects KEXEC. That enforces system to have CONFIG_KEXEC=y > as long as CONFIG_CRASH_DUMP=Y which people may not want. > > In Ignat's case, he sets CONFIG_CRASH_DUMP=y, CONFIG_KEXEC_FILE=y and > CONFIG_KEXEC=n because kexec_load interface could have security issue if > kernel/initrd has no chance to be signed and verified. > > CRASH_DUMP has select of KEXEC because Eric, author of above commit, > met a LKP report of build failure when posting patch of earlier version. > Please see below link to get detail of the LKP report: > > https://lore.kernel.org/all/3e8eecd1-a277-2cfb-690e-5de2eb7b988e@xxxxxxxxxx/T/#u > > In fact, that LKP report is triggered because arm's <asm/kexec.h> is > wrapped in CONFIG_KEXEC ifdeffery scope. That is wrong. CONFIG_KEXEC > controls the enabling/disabling of kexec_load interface, but not kexec > feature. Removing the wrongly added CONFIG_KEXEC ifdeffery scope in > <asm/kexec.h> of arm allows us to drop the select KEXEC for CRASH_DUMP. Hm... With the patch, when cross compiling for arm and CONFIG_KEXEC_CORE=y # CONFIG_KEXEC is not set CONFIG_CRASH_DUMP=y I get the following linker error at the end: CALL scripts/checksyscalls.sh UPD include/generated/utsversion.h CC init/version-timestamp.o LD .tmp_vmlinux.kallsyms1 arm-linux-gnueabi-ld: kernel/kexec_core.o: in function `kimage_free': kexec_core.c:(.text+0xf5c): undefined reference to `machine_kexec_cleanup' arm-linux-gnueabi-ld: kernel/kexec_core.o: in function `__crash_kexec': kexec_core.c:(.text+0x15bc): undefined reference to `machine_crash_shutdown' arm-linux-gnueabi-ld: kexec_core.c:(.text+0x15c4): undefined reference to `machine_kexec' arm-linux-gnueabi-ld: kernel/kexec_core.o: in function `kernel_kexec': kexec_core.c:(.text+0x1a04): undefined reference to `machine_kexec' make[2]: *** [scripts/Makefile.vmlinux:37: vmlinux] Error 1 make[1]: *** [/home/ignat/git/linux-upstream/Makefile:1154: vmlinux] Error 2 make: *** [Makefile:234: __sub-make] Error 2 > Signed-off-by: Baoquan He <bhe@xxxxxxxxxx> > --- > arch/arm/include/asm/kexec.h | 4 ---- > kernel/Kconfig.kexec | 1 - > 2 files changed, 5 deletions(-) > > diff --git a/arch/arm/include/asm/kexec.h b/arch/arm/include/asm/kexec.h > index e62832dcba76..a8287e7ab9d4 100644 > --- a/arch/arm/include/asm/kexec.h > +++ b/arch/arm/include/asm/kexec.h > @@ -2,8 +2,6 @@ > #ifndef _ARM_KEXEC_H > #define _ARM_KEXEC_H > > -#ifdef CONFIG_KEXEC > - > /* Maximum physical address we can use pages from */ > #define KEXEC_SOURCE_MEMORY_LIMIT (-1UL) > /* Maximum address we can reach in physical address mode */ > @@ -82,6 +80,4 @@ static inline struct page *boot_pfn_to_page(unsigned long boot_pfn) > > #endif /* __ASSEMBLY__ */ > > -#endif /* CONFIG_KEXEC */ > - > #endif /* _ARM_KEXEC_H */ > diff --git a/kernel/Kconfig.kexec b/kernel/Kconfig.kexec > index 7aff28ded2f4..1cc3b1c595d7 100644 > --- a/kernel/Kconfig.kexec > +++ b/kernel/Kconfig.kexec > @@ -97,7 +97,6 @@ config 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 > -- > 2.41.0 > _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec