Hi Simon,
On Mon, Oct 19, 2015 at 10:51 AM, Simon Glass sjg@chromium.org wrote:
Hi Bin,
On 10 October 2015 at 02:57, Bin Meng bmeng.cn@gmail.com wrote:
Hi Simon,
On Sat, Oct 3, 2015 at 10:29 PM, Simon Glass sjg@chromium.org wrote:
Hi Bin,
On 29 September 2015 at 11:17, Bin Meng bmeng.cn@gmail.com wrote:
SeaBIOS is an open source implementation of a 16-bit X86 BIOS. It can run in an emulator or natively on X86 hardware with the use of coreboot. With SeaBIOS's help, we can boot some OSes that require 16-bit BIOS services like Windows/DOS.
As U-Boot, we have to manually create a table where SeaBIOS gets system information (eg: E820) from. The table unfortunately has to follow the coreboot table format as SeaBIOS currently supports booting as a coreboot payload. No U-Boot native support there.
Booting SeaBIOS is done via U-Boot's bootelf command.
This is the initial attempt to support booting SeaBIOS from U-Boot. If the basic concept is good, I can spend time working on follow-on patches to enable BIOS tables as well as graphics support. One issue is that U-Boot x86 does not has a ROM file system like coreboot. This brings difficulities to pass PCI option ROM to SeaBIOS, if we don't modify SeaBIOS's source codes. Maybe we should promote CBFS in U-Boot x86?
This is tested on an Intel Crown Bay board with VGA card, booting SeaBIOS then chain loading a GRUB on a USB drive, then Linux kernel finally.
Looks good to me. I think it is OK to use CBFS if needed - are you thinking of an option to build u-boot.rom as a CBFS filesystem?
If using CBFS, that means we may have to abandon ifdtool? Or maybe mixed usage of both tools?
So far I'm not sure of the best approach. At present we have the ROM offsets stored mostly in Kconfig, with the MRC area in the SPI flash device tree node. The environment is also in Kconfig.
What sort of option ROMs do you want to support? What other options does seabios provide?
I believe SeaBIOS can run any kind of PCI option ROMs, but I have never tested other than vgabios. Also per coreboot's documentation, booting Windows needs SeaBIOS.
What does SEA stand for?
I guess it's because most of SeaBIOS's source codes are written in 'C', thus a 'C' BIOS.
Regards, Bin