[syslinux] Syslinux 3.81-pre4 (RC): halt on idle included
Sebastian Herbszt
herbszt at gmx.de
Thu May 21 12:32:27 PDT 2009
H. Peter Anvin wrote:
> Sebastian Herbszt wrote:
>>
>> Still same problem (IF=0) here with Qemu and Bochs and pxelinux
>> (etherboot and gpxe rom).
>> Syslinux works tho.
>>
>
> Oh, right. This is due to a serious bug in both Etherboot and gPXE (at
> least until very recent ones) where they leave interrupts disabled after
> INT 1Ah and INT 15h.
I can confirm the issue is gone with -pre8 and latest gPXE containing your
commit "[pcbios] Don't use "lret $2" to return from an interrupt" [1].
Since i didn't find a corresponding commit in the etherboot tree i assume it's
still affected (INT 1Ah and 15h handlers return with "lret $2").
> I have pushed out a -pre9 which works around this problem, plus added an
> STI to reset_idle which should hopefully avoid the worst instances of
> the same class of problems.
-pre9 works with old etherboot and old and new gPXE.
I noticed your commit "idle: handle PXE stacks which improperly disable interrupts"
also sets "NoHalt" to 1, so "HLT" is now skipped in the default configuration. Intended?
> I now also dump an error and debugging message if interrupts are ever
> off at do_idle time.
The output looks like:
boot: ERROR: idle with IF=0
<values from the stack>
There might be a minor user confusion because the "boot:" prompt message is not reprinted.
I am not sure it's worth while to fix this.
[1] http://git.etherboot.org/?p=gpxe.git;a=commitdiff;h=f44205b9ea928c3cdefb6848e7f20fe11d112522
- Sebastian
More information about the Syslinux
mailing list