powerpc/irq: Allow softirq to hardirq stack transition
authorMichael Ellerman <mpe@ellerman.id.au>
Thu, 30 Nov 2023 12:50:45 +0000 (23:50 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 3 Mar 2024 11:20:29 +0000 (22:20 +1100)
commit4eb20bf34ea296f648971a8528e32cd80efcbe89
treeef530697adb634bd75f8e322d9ba9a325ba31b9c
parent2a066ae11861257223500d7515e1541199cb7832
powerpc/irq: Allow softirq to hardirq stack transition

Allow a transition from the softirq stack to the hardirq stack when
handling a hardirq. Doing so means a hardirq received while deep in
softirq processing is less likely to cause a stack overflow of the
softirq stack.

Previously it wasn't safe to do so because irq_exit() (which initiates
softirq processing) was called on the hardirq stack.

That was changed in commit 1b1b6a6f4cc0 ("powerpc: handle irq_enter/
irq_exit in interrupt handler wrappers") and 1346d00e1bdf ("powerpc:
Don't select HAVE_IRQ_EXIT_ON_IRQ_STACK").

The allowed transitions are now:
 - process stack -> hardirq stack
 - process stack -> softirq stack
 - process stack -> softirq stack -> hardirq stack

Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20231130125045.3080961-1-mpe@ellerman.id.au
arch/powerpc/kernel/irq.c