[lkml]   [2010]   [Jul]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [patch 2/2] x86 NMI-safe INT3 and Page Fault
    * Andi Kleen ( wrote:
    > > And the thing is, if we just do NMI's correctly, and allow nesting,
    > > ALL THOSE PROBLEMS GO AWAY. And there is no reason what-so-ever to do
    > > stupid things elsewhere.
    > One issue I have with nesting NMIs is that you need
    > a nesting limit, otherwise you'll overflow the NMI stack.
    > We just got rid of nesting for normal interrupts because
    > of this stack overflow problem which hit in real situations.
    > In some cases you can get quite high NMI frequencies, e.g. with
    > performance counters. Now the current performance counter handlers
    > do not nest by themselves of course, but they might nest
    > with other longer running NMI users.
    > I think none of the current handlers are likely to nest
    > for very long, but there's more and more NMI coded all the time,
    > so it's definitely a concern.

    We're not proposing to actually "nest" NMIs per se. We copy the stack at the
    beginning of the NMI handler (and then use the copy) to permit nesting of faults
    over NMI handlers. Following NMIs that would "try" to nest over the NMI handler
    would see their regular execution postponed until the end of the currently
    running NMI handler. It's OK for these "nested" NMI handlers to use the bottom
    of NMI stack because the NMI handler on which they are trying to nest is only
    using the stack copy. These "nested" handlers return to the original NMI handler
    very early just after setting a "pending nmi" flag. There is more to it (e.g.
    handling NMI handler exit atomically with respect to incoming NMIs); please
    refer to the last assembly code snipped I sent to Linus a little earlier today
    for details.



    > -Andi
    > --
    > -- Speaking for myself only.

    Mathieu Desnoyers
    Operating System Efficiency R&D Consultant
    EfficiOS Inc.

     \ /
      Last update: 2010-07-17 00:43    [W:0.032 / U:1.408 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site