]> www.infradead.org Git - nvme.git/commit
riscv: kexec: Avoid deadlock in kexec crash path
authorSong Shuai <songshuaishuai@tinylab.org>
Wed, 26 Jun 2024 02:33:16 +0000 (10:33 +0800)
committerPalmer Dabbelt <palmer@rivosinc.com>
Wed, 3 Jul 2024 20:11:30 +0000 (13:11 -0700)
commitc562ba719df570c986caf0941fea2449150bcbc4
treec58aef9a875ebb4a1b41b970b9938ffa5039b0b7
parent393da6cbb2ff89aadc47683a85269f913aa1c139
riscv: kexec: Avoid deadlock in kexec crash path

If the kexec crash code is called in the interrupt context, the
machine_kexec_mask_interrupts() function will trigger a deadlock while
trying to acquire the irqdesc spinlock and then deactivate irqchip in
irq_set_irqchip_state() function.

Unlike arm64, riscv only requires irq_eoi handler to complete EOI and
keeping irq_set_irqchip_state() will only leave this possible deadlock
without any use. So we simply remove it.

Link: https://lore.kernel.org/linux-riscv/20231208111015.173237-1-songshuaishuai@tinylab.org/
Fixes: b17d19a5314a ("riscv: kexec: Fixup irq controller broken in kexec crash path")
Signed-off-by: Song Shuai <songshuaishuai@tinylab.org>
Reviewed-by: Ryo Takakura <takakura@valinux.co.jp>
Link: https://lore.kernel.org/r/20240626023316.539971-1-songshuaishuai@tinylab.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/kernel/machine_kexec.c