Zwane Mwaikambo wrote:
On Fri, 10 Dec 2004, George Anzinger wrote:The trick is the sti instruction: It enables interrupt processing after the following instruction.
That is ok. Either we have interrupts off and no softirqs are pending and we
proceed to the "hlt" (where the interrupt will be taken), or softirqs are
pending, we turn interrupts on, do the softirq, turn interrupts off and try
again. Unless some tasklet (RCU?) never "gives up" or we will exit the while
with interrupts off and move on to the "hlt". Or did I miss something?
But the point is that you cannot execute hlt with interrupts disabled.
Thus
sti
hlt
cannot race - it atomically enables interrupts and waits.