spurious interrupts caused by host ap driver


From: Jun Sun (jsun_at_junsun.net)
Date: 2002-07-19 23:12:49 UTC


On one of my systems, I found host ap driver caused many spurious interrupts.

The problem is at the end of hfa384x_cmd() function in prism2.c file:

#endif

        HFA384X_OUTW(HFA384X_EV_CMD, HFA384X_EVACK_OFF);

        spin_unlock_irqrestore(&local->cmdlock, flags);
        return res;

}

It appears HFA384X_OUTW() would do an interrupt acknowledgement, followed by immediately opening interrupts again. What might have happened is that interrupt acknowledge does not propagrate fast enough. So when interrupts are opened again, CPU still sees a pending interrupt. When we actually take the interrupt, the irq ack propagates to CPU and we found no IRQ.

I added a few cycles of delay between those two statements, which makes the spurious interrupts go away. That seems to confirm the hypothesis.

If this is true, is there any way we can shuffle the code around so that the IRQ ack happens a little earlier than the intr re-opening?

Jun



This archive was generated by hypermail 2.1.4.