MIPS: Add NMI notifier
Allow the board support code to register a raw notifier callback for NMI, similar to what is done for CU2 exceptions. Signed-off-by: Kevin Cernekee <cernekee@gmail.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/2958/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
18a1eef92d
commit
34bd92e27b
2 changed files with 21 additions and 0 deletions
|
@ -25,4 +25,16 @@ extern void (*board_nmi_handler_setup)(void);
|
||||||
extern void (*board_ejtag_handler_setup)(void);
|
extern void (*board_ejtag_handler_setup)(void);
|
||||||
extern void (*board_bind_eic_interrupt)(int irq, int regset);
|
extern void (*board_bind_eic_interrupt)(int irq, int regset);
|
||||||
|
|
||||||
|
extern int register_nmi_notifier(struct notifier_block *nb);
|
||||||
|
|
||||||
|
#define nmi_notifier(fn, pri) \
|
||||||
|
({ \
|
||||||
|
static struct notifier_block fn##_nb = { \
|
||||||
|
.notifier_call = fn, \
|
||||||
|
.priority = pri \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
register_nmi_notifier(&fn##_nb); \
|
||||||
|
})
|
||||||
|
|
||||||
#endif /* _ASM_TRAPS_H */
|
#endif /* _ASM_TRAPS_H */
|
||||||
|
|
|
@ -1339,9 +1339,18 @@ void ejtag_exception_handler(struct pt_regs *regs)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NMI exception handler.
|
* NMI exception handler.
|
||||||
|
* No lock; only written during early bootup by CPU 0.
|
||||||
*/
|
*/
|
||||||
|
static RAW_NOTIFIER_HEAD(nmi_chain);
|
||||||
|
|
||||||
|
int register_nmi_notifier(struct notifier_block *nb)
|
||||||
|
{
|
||||||
|
return raw_notifier_chain_register(&nmi_chain, nb);
|
||||||
|
}
|
||||||
|
|
||||||
NORET_TYPE void ATTRIB_NORET nmi_exception_handler(struct pt_regs *regs)
|
NORET_TYPE void ATTRIB_NORET nmi_exception_handler(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
|
raw_notifier_call_chain(&nmi_chain, 0, regs);
|
||||||
bust_spinlocks(1);
|
bust_spinlocks(1);
|
||||||
printk("NMI taken!!!!\n");
|
printk("NMI taken!!!!\n");
|
||||||
die("NMI", regs);
|
die("NMI", regs);
|
||||||
|
|
Loading…
Add table
Reference in a new issue