RISC-V: self-contained IPI handling routine
authorAnup Patel <anup.patel@wdc.com>
Mon, 1 Jun 2020 09:15:38 +0000 (14:45 +0530)
committerPalmer Dabbelt <palmerdabbelt@google.com>
Wed, 10 Jun 2020 02:11:19 +0000 (19:11 -0700)
commit5cf998ba8c7bbbfec3e0d6534c9a3f860ab9920e
tree215fab724b7472222ab135d2eaf7150b325f1aaa
parente8c7ef7d5819cb7ece70ce0d22bce63ca45a29e2
RISC-V: self-contained IPI handling routine

Currently, the IPI handling routine riscv_software_interrupt() does
not take any argument and also does not perform irq_enter()/irq_exit().

This patch makes IPI handling routine more self-contained by:
1. Passing "pt_regs *" argument
2. Explicitly doing irq_enter()/irq_exit()
3. Explicitly save/restore "pt_regs *" using set_irq_regs()

With above changes, IPI handling routine does not depend on caller
function to perform irq_enter()/irq_exit() and save/restore of
"pt_regs *" hence its more self-contained. This also enables us
to call IPI handling routine from IRQCHIP drivers.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
Acked-by: Palmer Dabbelt <palmerdabbelt@google.com>
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
arch/riscv/include/asm/irq.h
arch/riscv/include/asm/smp.h
arch/riscv/kernel/irq.c
arch/riscv/kernel/smp.c