powerpc: Add NMI IPI infrastructure
Add a simple NMI IPI system that handles concurrency and reentrancy. The platform does not have to implement a true non-maskable interrupt, the default is to simply use the debugger break IPI message. This has now been co-opted for a general IPI message, and users (debugger and crash) have been reimplemented on top of the NMI system. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> [mpe: Incorporate incremental fixes from Nick] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

parent
2b4f3ac564
commit
ddd703ca06
@@ -77,7 +77,7 @@ static void __init ps3_smp_probe(void)
|
||||
BUILD_BUG_ON(PPC_MSG_CALL_FUNCTION != 0);
|
||||
BUILD_BUG_ON(PPC_MSG_RESCHEDULE != 1);
|
||||
BUILD_BUG_ON(PPC_MSG_TICK_BROADCAST != 2);
|
||||
BUILD_BUG_ON(PPC_MSG_DEBUGGER_BREAK != 3);
|
||||
BUILD_BUG_ON(PPC_MSG_NMI_IPI != 3);
|
||||
|
||||
for (i = 0; i < MSG_COUNT; i++) {
|
||||
result = ps3_event_receive_port_setup(cpu, &virqs[i]);
|
||||
@@ -96,7 +96,7 @@ static void __init ps3_smp_probe(void)
|
||||
ps3_register_ipi_irq(cpu, virqs[i]);
|
||||
}
|
||||
|
||||
ps3_register_ipi_debug_brk(cpu, virqs[PPC_MSG_DEBUGGER_BREAK]);
|
||||
ps3_register_ipi_debug_brk(cpu, virqs[PPC_MSG_NMI_IPI]);
|
||||
|
||||
DBG(" <- %s:%d: (%d)\n", __func__, __LINE__, cpu);
|
||||
}
|
||||
|
Reference in New Issue
Block a user