On 09.06.2009 0:52 Uhr, ron minnich wrote:
Fix attached for qemu.
Awesome! Thanks for spotting this!
It would be nice to know if this causes trouble for real hardware, but it should not.
ron
There are some problems with the way these interrrupts were managed. First, the CLI erases any knowledge of whether interrupts were enabled or disabled. Second, the STI works badly on qemu; we get an immediate INT #0 as soon as the STI happens.
Is this a Qemu bug?
This doesn't happen on real hardware but, that said, I don't think this code should be doing cli and sti.
Peter Stuge brought this up, and I think I remembered seeing somewhere that loading the IDT and some other stuff should be guarded by cli+sti because otherwise an interrupt could happen during the switch?!? Not sure. It looks highly unlikely that this would happen for us.
Peter? Alex? Do you guys have more insight?
This change fixes the observed qemu failures.
Signed-off-by: Ronald G. Minnich rminnich@gmail.com
I hope we find out why this is a problem, because a combination of cli+sti should never cause an interrupt that would not exist without cli+sti. If we can't I suggest we commit this in a few days (Acked-by: Stefan Reinauer stepan@coresystems.de) since it fixes the problem.