Messages in this thread | | | Date | Wed, 14 Jul 2010 16:17:53 -0400 | From | Mathieu Desnoyers <> | Subject | Re: [patch 1/2] x86_64 page fault NMI-safe |
| |
* Linus Torvalds (torvalds@linux-foundation.org) wrote: > On Wed, Jul 14, 2010 at 12:36 PM, Frederic Weisbecker > <fweisbec@gmail.com> wrote: > > > > There is also the fact we need to handle the lost NMI, by defering its > > treatment or so. That adds even more complexity. > > I don't think your read my proposal very deeply. It already handles > them by taking a fault on the iret of the first one (that's why we > point to the stack frame - so that we can corrupt it and force a > fault).
It only handles the case of a single NMI coming in. What happens in this scenario?
- NMI (1) comes in. - takes a fault - iret - NMI (2) comes in. - nesting detected, popf/ret - takes another fault - NMI (3) comes in. - nesting detected, popf/ret - iret faults - executes only one extra NMI handler
We miss NMI (3) here. I think this is an important change from a semantic where, AFAIK, the hardware should be allowed to assume that the CPU will execute as many nmi handlers are there are NMIs acknowledged.
Thanks,
Mathieu
-- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com
| |