riscv: kexec: Fixup irq controller broken in kexec crash path
authorGuo Ren <guoren@linux.alibaba.com>
Thu, 20 Oct 2022 14:16:02 +0000 (10:16 -0400)
committerPalmer Dabbelt <palmer@rivosinc.com>
Wed, 30 Nov 2022 05:50:58 +0000 (21:50 -0800)
commitb17d19a5314a37f7197afd1a0200affd21a7227d
tree839898de2b24078bdc33d8b87228d4d148a3548c
parent9abf2313adc1ca1b6180c508c25f22f9395cc780
riscv: kexec: Fixup irq controller broken in kexec crash path

If a crash happens on cpu3 and all interrupts are binding on cpu0, the
bad irq routing will cause a crash kernel which can't receive any irq.
Because crash kernel won't clean up all harts' PLIC enable bits in
enable registers. This patch is similar to 9141a003a491 ("ARM: 7316/1:
kexec: EOI active and mask all interrupts in kexec crash path") and
78fd584cdec0 ("arm64: kdump: implement machine_crash_shutdown()"), and
PowerPC also has the same mechanism.

Fixes: fba8a8674f68 ("RISC-V: Add kexec support")
Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
Reviewed-by: Xianting Tian <xianting.tian@linux.alibaba.com>
Cc: Nick Kossifidis <mick@ics.forth.gr>
Cc: Palmer Dabbelt <palmer@rivosinc.com>
Link: https://lore.kernel.org/r/20221020141603.2856206-2-guoren@kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/kernel/machine_kexec.c