There are two NMIs in OpenTitan (for EG at least):
- Watchdog bark from the AON timer.
- Alert escalation from the alert handler.
Ibex has a non-standard resumable NMI implementation from before smrnmi was ratified, described here: https://ibex-core.readthedocs.io/en/latest/03_reference/exception_interrupts.html#recoverable-non-maskable-interrupt
Can we add these NMIs without changing upstream QEMU code too much? #111 attempted this.
Alternatively, can we somehow hook into the smrnmi implementation to manipulate mcause and mstatus etc in addition to the official mncause and mnstatus?
Alternatively, can we try to migrate Ibex to smrnmi upstream and use that? This is a bigger but more robust change.
There are two NMIs in OpenTitan (for EG at least):
Ibex has a non-standard resumable NMI implementation from before
smrnmiwas ratified, described here: https://ibex-core.readthedocs.io/en/latest/03_reference/exception_interrupts.html#recoverable-non-maskable-interruptCan we add these NMIs without changing upstream QEMU code too much? #111 attempted this.
Alternatively, can we somehow hook into the
smrnmiimplementation to manipulatemcauseandmstatusetc in addition to the officialmncauseandmnstatus?Alternatively, can we try to migrate Ibex to
smrnmiupstream and use that? This is a bigger but more robust change.