lkml.org 
[lkml]   [2004]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: RCU question
    On Sun, Dec 12, 2004 at 11:22:49AM +0100, Manfred Spraul wrote:
    > Andrea Arcangeli wrote:
    >
    > >On Sun, Dec 12, 2004 at 09:59:00AM +0100, Manfred Spraul wrote:
    > >
    > >
    > >>It means that our NMI irq return path should check if it points to a hlt
    > >>instruction and if yes, then increase the saved EIP by one before doing
    > >>the iretd, right?
    > >>
    > >>
    > >
    > >I don't think we'll ever post any event through nmi, so it doesn't
    > >matter. We only care to be waken by real irqs, not nmi/smi. Idle loop is
    > >fine to ignore the actions of the nmi handlers and to hang into the
    > >"hlt".
    > >
    > >
    > No, You misunderstood the problem:
    >
    > sti
    > ** NMI handler
    > ** normal interrupt arrives, is queued by the cpu
    > ** irqd from NMI handler
    > ** cpu notices the normal interrupt, handles it.
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    ok. The above just wasn't obvious to me because iret of an nmi is doing
    the same thing that sti does (and the nmi itself is like a cli).
    Shouldn't iret wait 1 instruction too or is there a special case about
    iret? The specs only tells sti waits 1 instruction, but they don't tell
    anything about iret (nor that it waits nor that it doesn't wait). I
    realized now the link posted here assumes iret isn't going to wait 1
    instruction before processing pending irqs which is reasonable given the
    specs don't tell anything about iret, but I didn't imagine there was a
    difference between sti and iret (I mean only when iret is going to
    change the interrupt enable flag from 0 to 1 just like sti does).
    Overall this is a very minor issue (unless HZ is 0), it would only
    introduce a 1/HZ latency to the irq that get posted while the nmi
    handler is running, and the nmi handlers never runs in production.
    Forcing idle=poll when the nmi watchdog is enabled is probably a
    reasonable fix.

    As for the SMI, I wonder how you plan to fix it. To me it sounds like a
    minor mistake that iret isn't equivalent to sti when it toggles the irq
    enable bitflag (infact I don't see a way to fix it for smi, though I
    know very little about smi).

    thanks.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:08    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean