On Fri, Feb 13, 2009 at 02:25:08PM -0500, Scott D. Davilla wrote:
SeaBios seems to have matured nicely and I figure it's about time to try again my attempts at resolving boot restrictions on the AppleTV.
For review, I'm the atv-bootloader author which is used for booting Linux under the AppleTV. This is a second stage bootloader which poses as a mach_kernel which was loaded by EFI firmware.
Currently, to enable loading a generic Linux kernel I'm already moving RSDP and SMBIOS table to where Linux can find them as well as converting the EFI memory map to an e820 memory map. This works very well and the next step is to get VBIOS POST'ed and working. With VBIOS working, this removes the last problem area that being able to use generic video console drivers. Once this is done, then the Linux kernels booted can be truly generic and also adds the possibility of booting Windows.
From what I can gleam from the code, it seems that I should be able to load up SeaBios, setup the proper structures that it expects and go. Then bang, instant bios which will not only handle vbios but also a real bios.
Any comments or pointers to things to watch out for would be appreciated.
Sounds interesting.
As a thought, I wonder if we could extend SeaBIOS to make the EFI calls directly. The SeaBIOS post phase runs in 32bit mode (with standard gcc). Currently, the code in src/coreboot.c extracts info from the coreboot table to build the e820 map and copy rsdp. Maybe a src/efi.c could do something similar for EFI machines.
Just a thought - let us know what you find.
32bit mode is right where I'm running. In going over the SeaBIOS code, it looks like I just need to prep a coreboot table, stick it in the correct place and call post.
Or I could mod the coreboot.c code and create an efi.c to just grab it from the original locations.
Calling EFI proper is not possible, there's really not much to call as I'm way past the EFI release point. But I do have the devicetree and other interesting bits.
This will be fun, of course, no serial port which makes it real interesting to debug.
I would also be interested in USB keyboard support. FILO has ohic/uhic in 32bit mode but not 16bit.