Because of you must provide some function which handles NMI, and as
you cannot switch IDT and CR3 atomically together, NMI handler has
to be on same address in both address spaces - at least temporary.
And in addition NMI handler in VM would have to switch address spaces
back, execute NMI handler, and return CPU/MMU back to previous state -
which may be just in the middle of normal VM<->Linux transition, so
this context switching cannot use any global variable, it must
save complete CPU/MMU state on stack. And it must not use any spinlock.
If you have any idea how it can be done with NMI unmasked all the way
around...
Thanks,
Petr Vandrovec
vandrove@vc.cvut.cz
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/