[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