On 20.10.20 15:33, Jan Beulich wrote:
On 16.10.2020 10:53, Juergen Gross wrote:
Actions in NMI context are rather limited as e.g. locking is rather
fragile.
Add a generic framework to continue processing in normal interrupt
context after leaving NMI processing.
This is done by a high priority interrupt vector triggered via a
self IPI from NMI context, which will then call the continuation
function specified during NMI handling.
I'm concerned by there being just a single handler allowed, when
the series already introduces two uses. A single NMI instance
may signal multiple things in one go. At the very least we then
need a priority, such that SERR could override oprofile.
A different approach could be not to introduce a generic interface,
but to explicitly call the continuation handlers in the interrupt
handler.
Instead of a function pointer, a parameter pointer and a busy
indicator (probably another function pointer) per cpu, we'd need for
now only a parameter value per cpu (for the oprofile case) and a
global flag (for the SERR case).
The downside would be having to add additional fields for other
use cases, but for now I think this could be the better way,
especially as this would remove the theoretical case of multiple
issues overwriting one another.
Thoughts?
Juergen