Use spinlocks instead of global cli. Global cli can take milliseconds.
> The Intel book(s) state that an interrupt is not acknowledged until
> so many clocks (don't remember the number) after a stack operation.
Reread it. It says 'after operation with ss' - that is after
"mov xxxx,%ss" or "pop %ss", as it is expected that next instruction
will be "movl yyyy,%esp".
Before "lss ...." (it is lss in intel mnemonic...) was invented, you
could not switch your stack safely without this feature, as NMI could
arrive in the middle of your stack switch without blocking all interrupts
after "mov xxxx,%ss".
BTW, if you chain "mov %eax,%ss" back to back, they are executed
in pairs - irq can arrive after even mov, but cannot after odd (at
least on PII and PIII). But it is a bit off topic for L-K (except that
we can try other clones, maybe someone got it wrong?)
Best regards,
Petr Vandrovec
vandrove@vc.cvut.cz
-
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/