On Tue, Jan 17, 2017 at 11:33:54AM +0100, Gerd Hoffmann wrote:
I was curious to see what the "sercon" stuff would look like in SeaVGABIOS instead of in SeaBIOS.
[...]
I'm not sure how important the vga quirks are though. I'd guess the use cases where the quirks are essential so the guest can do proper graphics output (such as old xorg server in the guest) and the use cases where you want serial console support for the bios (headless server) have little to no overlap.
I agree on no overlap. My big worry with the quirks is that the symptoms are just a mysterious crash. Should someone turn it on then some guests (or perhaps even some applications) will stop running with no indication of the root cause of the problem. It's also a significant regression from sgabios.
However, handling exotic serial outputs (eg, mmio and usb based) would be better suited in SeaBIOS.
Indeed. Extending this for other hardware is alot easier when it is in seabios and can re-use the code there.
After I posted the seavgabios stuff above, it occurred to me that another way to tackle this would be to keep the code in seabios and harden the sercon assembler entry point. Specifically, the assembler code could check that the last mode set wasn't from a vesa mode set call and it could check that calll (vs callw) works. It's a bit ugly to do that in assembler, but I think that would prevent all the nasty crashes that the quirks cause. Alas, I didn't get a chance to prototype it.
-Kevin