Hi, > On 6 Jan 2025, at 15:14, Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > 6.6-stable review patch. If anyone has any objections, please let me know. I think this back port breaks 6.6 build (namely vmlinux.o link stage): LD [M] net/netfilter/xt_nat.ko LD [M] net/netfilter/xt_addrtype.ko LD [M] net/ipv4/netfilter/iptable_nat.ko UPD include/generated/utsversion.h CC init/version-timestamp.o LD .tmp_vmlinux.kallsyms1 ld: vmlinux.o: in function `__crash_kexec': (.text+0x15a93a): undefined reference to `machine_crash_shutdown' ld: vmlinux.o: in function `__do_sys_kexec_file_load': kexec_file.c:(.text+0x15cef1): undefined reference to `arch_kexec_protect_crashkres' ld: kexec_file.c:(.text+0x15cf28): undefined reference to `arch_kexec_unprotect_crashkres' make[2]: *** [scripts/Makefile.vmlinux:37: vmlinux] Error 1 make[1]: *** [/home/ignat/git/test/mainline/linux-6.6.70/Makefile:1164: vmlinux] Error 2 make: *** [Makefile:234: __sub-make] Error 2 The KEXEC config setup, which triggers above: # Kexec and crash features # CONFIG_CRASH_CORE=y CONFIG_KEXEC_CORE=y # CONFIG_KEXEC is not set CONFIG_KEXEC_FILE=y # CONFIG_KEXEC_SIG is not set # CONFIG_CRASH_DUMP is not set # end of Kexec and crash features # end of General setup > > ------------------ > > From: Baoquan He <bhe@xxxxxxxxxx> > > [ Upstream commit a4eeb2176d89fdf2785851521577b94b31690a60 ] > > Now crash codes under kernel/ folder has been split out from kexec > code, crash dumping can be separated from kexec reboot in config > items on x86 with some adjustments. > > Here, also change some ifdefs or IS_ENABLED() check to more appropriate > ones, e,g > - #ifdef CONFIG_KEXEC_CORE -> #ifdef CONFIG_CRASH_DUMP > - (!IS_ENABLED(CONFIG_KEXEC_CORE)) - > (!IS_ENABLED(CONFIG_CRASH_RESERVE)) > > [bhe@xxxxxxxxxx: don't nest CONFIG_CRASH_DUMP ifdef inside CONFIG_KEXEC_CODE ifdef scope] > Link: https://lore.kernel.org/all/SN6PR02MB4157931105FA68D72E3D3DB8D47B2@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/T/#u > Link: https://lkml.kernel.org/r/20240124051254.67105-7-bhe@xxxxxxxxxx > Signed-off-by: Baoquan He <bhe@xxxxxxxxxx> > Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > Cc: Eric W. Biederman <ebiederm@xxxxxxxxxxxx> > Cc: Hari Bathini <hbathini@xxxxxxxxxxxxx> > Cc: Pingfan Liu <piliu@xxxxxxxxxx> > Cc: Klara Modin <klarasmodin@xxxxxxxxx> > Cc: Michael Kelley <mhklinux@xxxxxxxxxxx> > Cc: Nathan Chancellor <nathan@xxxxxxxxxx> > Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > Cc: Yang Li <yang.lee@xxxxxxxxxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Stable-dep-of: bcc80dec91ee ("x86/hyperv: Fix hv tsc page based sched_clock for hibernation") > Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> > --- > arch/x86/kernel/Makefile | 4 ++-- > arch/x86/kernel/cpu/mshyperv.c | 10 ++++++++-- > arch/x86/kernel/kexec-bzimage64.c | 4 ++++ > arch/x86/kernel/kvm.c | 4 ++-- > arch/x86/kernel/machine_kexec_64.c | 3 +++ > arch/x86/kernel/reboot.c | 4 ++-- > arch/x86/kernel/setup.c | 2 +- > arch/x86/kernel/smp.c | 2 +- > arch/x86/xen/enlighten_hvm.c | 4 ++++ > arch/x86/xen/mmu_pv.c | 2 +- > 10 files changed, 28 insertions(+), 11 deletions(-) > > diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile > index 3269a0e23d3a..15fc9fc3dcf0 100644 > --- a/arch/x86/kernel/Makefile > +++ b/arch/x86/kernel/Makefile > @@ -99,9 +99,9 @@ obj-$(CONFIG_TRACING) += trace.o > obj-$(CONFIG_RETHOOK) += rethook.o > obj-$(CONFIG_CRASH_CORE) += crash_core_$(BITS).o > obj-$(CONFIG_KEXEC_CORE) += machine_kexec_$(BITS).o > -obj-$(CONFIG_KEXEC_CORE) += relocate_kernel_$(BITS).o crash.o > +obj-$(CONFIG_KEXEC_CORE) += relocate_kernel_$(BITS).o > obj-$(CONFIG_KEXEC_FILE) += kexec-bzimage64.o > -obj-$(CONFIG_CRASH_DUMP) += crash_dump_$(BITS).o > +obj-$(CONFIG_CRASH_DUMP) += crash_dump_$(BITS).o crash.o > obj-y += kprobes/ > obj-$(CONFIG_MODULES) += module.o > obj-$(CONFIG_X86_32) += doublefault_32.o > diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c > index bcb2d640a0cd..93e1cb4f7ff1 100644 > --- a/arch/x86/kernel/cpu/mshyperv.c > +++ b/arch/x86/kernel/cpu/mshyperv.c > @@ -209,7 +209,9 @@ static void hv_machine_shutdown(void) > if (kexec_in_progress) > hyperv_cleanup(); > } > +#endif /* CONFIG_KEXEC_CORE */ > > +#ifdef CONFIG_CRASH_DUMP > static void hv_machine_crash_shutdown(struct pt_regs *regs) > { > if (hv_crash_handler) > @@ -221,7 +223,7 @@ static void hv_machine_crash_shutdown(struct pt_regs *regs) > /* Disable the hypercall page when there is only 1 active CPU. */ > hyperv_cleanup(); > } > -#endif /* CONFIG_KEXEC_CORE */ > +#endif /* CONFIG_CRASH_DUMP */ > #endif /* CONFIG_HYPERV */ > > static uint32_t __init ms_hyperv_platform(void) > @@ -493,9 +495,13 @@ static void __init ms_hyperv_init_platform(void) > no_timer_check = 1; > #endif > > -#if IS_ENABLED(CONFIG_HYPERV) && defined(CONFIG_KEXEC_CORE) > +#if IS_ENABLED(CONFIG_HYPERV) > +#if defined(CONFIG_KEXEC_CORE) > machine_ops.shutdown = hv_machine_shutdown; > +#endif > +#if defined(CONFIG_CRASH_DUMP) > machine_ops.crash_shutdown = hv_machine_crash_shutdown; > +#endif > #endif > if (ms_hyperv.features & HV_ACCESS_TSC_INVARIANT) { > /* > diff --git a/arch/x86/kernel/kexec-bzimage64.c b/arch/x86/kernel/kexec-bzimage64.c > index a61c12c01270..0de509c02d18 100644 > --- a/arch/x86/kernel/kexec-bzimage64.c > +++ b/arch/x86/kernel/kexec-bzimage64.c > @@ -263,11 +263,13 @@ setup_boot_parameters(struct kimage *image, struct boot_params *params, > memset(¶ms->hd0_info, 0, sizeof(params->hd0_info)); > memset(¶ms->hd1_info, 0, sizeof(params->hd1_info)); > > +#ifdef CONFIG_CRASH_DUMP > if (image->type == KEXEC_TYPE_CRASH) { > ret = crash_setup_memmap_entries(image, params); > if (ret) > return ret; > } else > +#endif > setup_e820_entries(params); > > nr_e820_entries = params->e820_entries; > @@ -428,12 +430,14 @@ static void *bzImage64_load(struct kimage *image, char *kernel, > return ERR_PTR(-EINVAL); > } > > +#ifdef CONFIG_CRASH_DUMP > /* Allocate and load backup region */ > if (image->type == KEXEC_TYPE_CRASH) { > ret = crash_load_segments(image); > if (ret) > return ERR_PTR(ret); > } > +#endif > > /* > * Load purgatory. For 64bit entry point, purgatory code can be > diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c > index b8ab9ee5896c..38d88c8b56ec 100644 > --- a/arch/x86/kernel/kvm.c > +++ b/arch/x86/kernel/kvm.c > @@ -769,7 +769,7 @@ static struct notifier_block kvm_pv_reboot_nb = { > * won't be valid. In cases like kexec, in which you install a new kernel, this > * means a random memory location will be kept being written. > */ > -#ifdef CONFIG_KEXEC_CORE > +#ifdef CONFIG_CRASH_DUMP > static void kvm_crash_shutdown(struct pt_regs *regs) > { > kvm_guest_cpu_offline(true); > @@ -852,7 +852,7 @@ static void __init kvm_guest_init(void) > kvm_guest_cpu_init(); > #endif > > -#ifdef CONFIG_KEXEC_CORE > +#ifdef CONFIG_CRASH_DUMP > machine_ops.crash_shutdown = kvm_crash_shutdown; > #endif > > diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c > index 2fa12d1dc676..aaeac2deb85d 100644 > --- a/arch/x86/kernel/machine_kexec_64.c > +++ b/arch/x86/kernel/machine_kexec_64.c > @@ -545,6 +545,8 @@ int arch_kimage_file_post_load_cleanup(struct kimage *image) > } > #endif /* CONFIG_KEXEC_FILE */ > > +#ifdef CONFIG_CRASH_DUMP > + > static int > kexec_mark_range(unsigned long start, unsigned long end, bool protect) > { > @@ -589,6 +591,7 @@ void arch_kexec_unprotect_crashkres(void) > { > kexec_mark_crashkres(false); > } > +#endif > > /* > * During a traditional boot under SME, SME will encrypt the kernel, > diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c > index 830425e6d38e..f3130f762784 100644 > --- a/arch/x86/kernel/reboot.c > +++ b/arch/x86/kernel/reboot.c > @@ -796,7 +796,7 @@ struct machine_ops machine_ops __ro_after_init = { > .emergency_restart = native_machine_emergency_restart, > .restart = native_machine_restart, > .halt = native_machine_halt, > -#ifdef CONFIG_KEXEC_CORE > +#ifdef CONFIG_CRASH_DUMP > .crash_shutdown = native_machine_crash_shutdown, > #endif > }; > @@ -826,7 +826,7 @@ void machine_halt(void) > machine_ops.halt(); > } > > -#ifdef CONFIG_KEXEC_CORE > +#ifdef CONFIG_CRASH_DUMP > void machine_crash_shutdown(struct pt_regs *regs) > { > machine_ops.crash_shutdown(regs); > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c > index eb129277dcdd..8bcecabd475b 100644 > --- a/arch/x86/kernel/setup.c > +++ b/arch/x86/kernel/setup.c > @@ -547,7 +547,7 @@ static void __init reserve_crashkernel(void) > bool high = false; > int ret; > > - if (!IS_ENABLED(CONFIG_KEXEC_CORE)) > + if (!IS_ENABLED(CONFIG_CRASH_RESERVE)) > return; > > total_mem = memblock_phys_mem_size(); > diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c > index 96a771f9f930..52c3823b7211 100644 > --- a/arch/x86/kernel/smp.c > +++ b/arch/x86/kernel/smp.c > @@ -282,7 +282,7 @@ struct smp_ops smp_ops = { > .smp_cpus_done = native_smp_cpus_done, > > .stop_other_cpus = native_stop_other_cpus, > -#if defined(CONFIG_KEXEC_CORE) > +#if defined(CONFIG_CRASH_DUMP) > .crash_stop_other_cpus = kdump_nmi_shootdown_cpus, > #endif > .smp_send_reschedule = native_smp_send_reschedule, > diff --git a/arch/x86/xen/enlighten_hvm.c b/arch/x86/xen/enlighten_hvm.c > index 70be57e8f51c..ade22feee7ae 100644 > --- a/arch/x86/xen/enlighten_hvm.c > +++ b/arch/x86/xen/enlighten_hvm.c > @@ -141,7 +141,9 @@ static void xen_hvm_shutdown(void) > if (kexec_in_progress) > xen_reboot(SHUTDOWN_soft_reset); > } > +#endif > > +#ifdef CONFIG_CRASH_DUMP > static void xen_hvm_crash_shutdown(struct pt_regs *regs) > { > native_machine_crash_shutdown(regs); > @@ -229,6 +231,8 @@ static void __init xen_hvm_guest_init(void) > > #ifdef CONFIG_KEXEC_CORE > machine_ops.shutdown = xen_hvm_shutdown; > +#endif > +#ifdef CONFIG_CRASH_DUMP > machine_ops.crash_shutdown = xen_hvm_crash_shutdown; > #endif > } > diff --git a/arch/x86/xen/mmu_pv.c b/arch/x86/xen/mmu_pv.c > index 6b201e64d8ab..bfd57d07f4b5 100644 > --- a/arch/x86/xen/mmu_pv.c > +++ b/arch/x86/xen/mmu_pv.c > @@ -2517,7 +2517,7 @@ int xen_remap_pfn(struct vm_area_struct *vma, unsigned long addr, > } > EXPORT_SYMBOL_GPL(xen_remap_pfn); > > -#ifdef CONFIG_KEXEC_CORE > +#ifdef CONFIG_VMCORE_INFO > phys_addr_t paddr_vmcoreinfo_note(void) > { > if (xen_pv_domain()) > -- > 2.39.5 > > > >