[coreboot] using SeaBios on EFI platforms
Scott D. Davilla
davilla at 4pi.com
Sat Feb 14 02:57:44 CET 2009
>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.
>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.
More information about the coreboot