Whilst looking at Jakub's bug report here https://bugs.launchpad.net/qemu/+bug/942299, I've been working on a patch to correct the QEMU interrupt handler on qemu-ppc. Now that this bug is close to being fixed, I've had a look at OpenBIOS to find out why newer versions of OpenBIOS freeze before the HelenOS loading screen.
A local git bisect shows that the culprit is actually this commit:
commit b6de01a59394f1fafbfb2c65cb784c9d23067fa2 Author: laurent laurent@f158a5a8-5612-0410-a976-696ce0be7e32 Date: Tue Aug 4 21:08:37 2009 +0000
Allows to configure screen size from Qemu command line options using FW_CFG interface. Only enabled for PPC/QEMU and VGA/VBE.
git-svn-id: svn://openbios.org/openbios/trunk@538 f158a5a8-5612-0410-a976-696ce0be7e32
Having stepped through vga_vbe_init() in drivers/vga_vbe.c, the only difference is that reading the display depth from the QEMU FW CFG interface returns 15 instead of the in-built OpenBIOS default of 8.
So is a bit-depth of 15 supported by OpenBIOS? This seems quite unusual given that it is not a power of 2; however if I use GDB to override the value to 16 then HelenOS boots but with a blue screen BIOS on VGA so I'm not sure that is the correct solution either. Does anyone know what the default bit-depth is in Apple's firmware?