Okay... that leaves a few very ugly options.
I think spewing onto a potentially uninitialized (or not even present)
serial port is worse than losing the messages. It seems to be pretty
much a no-brainer to have:
if (boot_params.screen_info.orig_video_isVGA != 1)
return;
... in early_vga_write(), and is something we should do regardless.
Calling early_serial_write() before early_serial_init() is distinctly
not safe... depending on boot conditions you might end up with a glacial
boot.
Therefore, the only sensible way to get the early messages out is really
to push setup_early_printk() as early as possible.
-hpa
--