[syslinux] lpxelinux.0 with device that doesn't support Interrupts

H. Peter Anvin hpa at zytor.com
Tue Mar 1 11:38:34 PST 2016


On 02/26/16 15:10, Wissam Shoukair via Syslinux wrote:
>
> I am experiencing an issue where I ran ipxe (as an option rom) and
> downloaded the lpxelinux.0 as the bootloader.
> Next it should download the ldlinux.c32 file using UNDI API.
>
> but before that it will close and open  the underlying device (which
> is ipxe), and hooking the device interrupt so it can start getting
> some packets.
> 
> What I'm experiencing is that if the underlying device doesn't
> support interrupts, i.e. the IntNumber that is returned in
> PXENV_UNDI_GET_INFORMATION is 0, then lpxelinux.0 will hook IRQ0
> which is very bad behavior.
> 
> one good example of the faulty code is in undinet.c where we open a
> device, we hook the IRQ regardless if its 0 or not, while in the
> latest iPXE code this behavior was corrected and a check expression
> was added to avoid such bad behavior
>

This will happen if the device reports that it supports interrupts via
the device flags, but checking that IRQ != 0 seems like a good sanity check.

In other words, we're reacting badly to a firmware bug which is probably
fairly common and is also easy to work around.

	-hpa




More information about the Syslinux mailing list