:In a similar way, I'm removing interrupt mask copies in memory. We
:still mask interrupts which aren't in use, but no others. If anybody
:has any reason not to want to do this, we should talk about it.
I think you still have to mask level interrupts, otherwise you won't
be able to sti. Some subsystems may generate a phenominal number
of interrupts while the interrupt routine is running -- for example,
the serial ports. I think the masking was put in there as an
optmiization not only for that, but also so the interrupt could be
EOI'd early so as to allow a new interrupt to become pending while
the interrupt routine was running (thus closing a potential window of
opportunity where an interrupt might otherwise be missed).
If you remove the masking you have to delay the EOI and that is probably
a huge mistake because it may lead to lost interrupts. Another example:
if a keyboard interrupt is lost you can lose the keyboard entierly. If
the EOI is delayed there is a much greater chance of losing the keyboard