]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
LoongArch: Mask all interrupts during kexec/kdump
authorHuacai Chen <chenhuacai@loongson.cn>
Thu, 20 Nov 2025 06:42:05 +0000 (14:42 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Thu, 20 Nov 2025 06:42:05 +0000 (14:42 +0800)
If the default state of the interrupt controllers in the first kernel
don't mask any interrupts, it may cause the second kernel to potentially
receive interrupts (which were previously allocated by the first kernel)
immediately after a CPU becomes online during its boot process. These
interrupts cannot be properly routed, leading to bad IRQ issues.

This patch calls machine_kexec_mask_interrupts() to mask all interrupts
during the kexec/kdump process.

Signed-off-by: Tianyang Zhang <zhangtianyang@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/kernel/machine_kexec.c

index 2d64b7c81e5e45df2a0ecb5473c8ed3775ac4162..d7fafda1d5417c99b48d842b2a9cb84d464e4cca 100644 (file)
@@ -237,6 +237,7 @@ void machine_crash_shutdown(struct pt_regs *regs)
 #ifdef CONFIG_SMP
        crash_smp_send_stop();
 #endif
+       machine_kexec_mask_interrupts();
        cpumask_set_cpu(crashing_cpu, &cpus_in_crash);
 
        pr_info("Starting crashdump kernel...\n");
@@ -274,6 +275,7 @@ void machine_kexec(struct kimage *image)
 
        /* We do not want to be bothered. */
        local_irq_disable();
+       machine_kexec_mask_interrupts();
 
        pr_notice("EFI boot flag: 0x%lx\n", efi_boot);
        pr_notice("Command line addr: 0x%lx\n", cmdline_ptr);