[lkml]   [2001]   [Mar]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectQuestion about IRQ_PENDING/IRQ_REPLAY
    Hi Linus !

    I've some questions regarding the behaviour of arch/i386/kernel/irq.c
    regarding IRQ_PENDING and IRQ_REPLAY.

    Especially, my question is about the code in enable_irq() which checks
    for IRQ_PENDING, and then
    "replays" the interrupt by asking the APIC to issue it again.

    I don't have a simple way on PPC to cause the interrupt to happen again,
    as you can imagine this is rather controller-specific. However, looking
    at the code closely, I couldn't figure out a case where having
    IRQ_PENDING in enable_irq() makes sense.

    How can IRQ_PENDING happen to be set on an IRQ_DISABLED interrupt, and
    why would that matter (why should we take this interrupt) ?

    AFAIK, IRQ_PENDING can only be set as a result of a call to do_IRQ().
    Since we loop when calling the actual handler, I fail to see how we could
    "miss" an interrupt. If the interrupt is actually disabled, we should not
    get it at all, and if we did, I don't see why it would matter to resend
    it when it gets enabled since disabled interrupts are supposed to be
    ignored (well, they are by most PICs). Obviously, this matters only for
    an edge interrupt as level ones will stay asserted until the device is happy.

    I'd be glad if you could take the time to enlighten me about this as I'm
    trying to make the PPC code as close as the i386, according to your
    comment stating that it would be generic in 2.5, and I don't like having
    code I don't fully understand ;)

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:29    [W:0.020 / U:4.384 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site