Geode LX800 hanging at boot in vesa_store_edid() w/ CONFIG_FIRMWARE_EDID=y

From: Andrew Paprocki
Date: Tue Mar 04 2008 - 02:11:43 EST


I have a LX800 board which hangs at boot time *only* if no monitor is
plugged into the VGA port. It hangs for about 20 minutes and then
continues booting. If a monitor is plugged into the system while it
is hung, it recovers after a few minutes and continues booting. I
added puts() debugging in the kernel main() and it is hanging in
vesa_store_edid() in the first asm() call:

/* Note: The VBE DDC spec is different from the main VESA spec;
we genuinely have to assume all registers are destroyed here. */

asm("pushw %%es; movw %2,%%es; "INT10"; popw %%es"
: "+a" (ax), "+b" (bx)
: "c" (cx), "D" (di)
: "esi");

After waiting for a really long time, this int10 finishes and it
executes the second asm() call which returns right away. I never
tried booting the system without a head, so I never noticed this
problem before. Does this point to some kind of BIOS bug? The system
boots fine when CONFIG_FIRMWARE_EDID is disabled (I'm not even sure if
it should have been enabled in the first place), but I want to make
sure the manufacturer is alerted if there is a BIOS problem.

Thanks,
-Andrew
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/