[gPXE-devel] gPXE performance under virtualization

Stefan Hajnoczi stefanha at gmail.com
Wed Jul 7 01:33:06 EDT 2010


On Wed, Jul 7, 2010 at 3:00 AM, Geoff Lywood <glywood at vmware.com> wrote:
> Please be very careful about using direct VGA and PC keyboard in the default build. On many machines, int 10h also goes to a serial port (or can be configured to do so). Many people rely on serial as a means of remotely monitoring servers, and your optimizations would break their workflow.

You are right.  gPXE needs to use the BIOS console by default so that
BIOS serial redirection works and other firmware components can hook
the BIOS interrupt and affect gPXE.

> It might be better to optimize is_key() so that it checks bytes 0040:001a and 0040:001c in the BIOS data area before dropping into real mode. I'm not sure what kind of compatibility problems that would hit, but it might be worth a try.

That's an idea.  I was thinking about moving the hardcoded is_key()
check from the download main loop into a timer that only gets
triggered, say, every 50 ms.  But in order to do that we need a
light-weight and better granularity timer, like rdtsc.

> I'd also like to point out that including serial console support in its current state is a bad idea: if you ever enable the serial console on a machine without a serial port, it will behave as if the backspace key is permanently held down, rendering any user interface useless.

I've never tried the serial console on a machine without serial.
Perhaps we can detect this case and avoid it because constant
backspace key presses is annoying, thanks for bringing it up :).

Stefan


More information about the gPXE-devel mailing list