On Wed, Aug 12, 2009 at 03:59:02AM +0800, Jason Wang wrote:
Hi all Since USB ROM has already added into the booting menu list(IPL table), and the UHCI stack can be run well in usbrom now, i have some issues to confirm, any advices are welcome.
- <<Plug and Play BIOS Specification>>Page21, There is an r Return Status
from Initialization Call of OPTION ROM. Which used to let the bios know the status. But it seems Seabios does not check the return code. Is that OK?
SeaBIOS assumes the rom runs successfully - I think that is okay. If you wish to unload the optionrom, set its size to 0.
- After Seabios make an far call into the BEV, the OPTION ROM should begin
to load OS.if it failed, it can return back to BIOS. But it can not return back with my USB OPTION ROM, Is there any configuration I should set?
You should not use BEV; you should use a BCV.
I don't know why you can't return - it should work. Maybe the stack or gdt/idt was changed?
- In my eyes, OPTION ROM hook int13 after jump into BEV, not in the
initialization.But after that how does it jump into the booting code which located in the USB disk?
As above, define a BCV and hook int13 from the BCV handler.
SeaBIOS will make int13 calls to load the OS and boot it. As long as your rom can handle the int13 calls, SeaBIOS will be able to boot an OS from usb.
BTW: Kevin: I looked the code of Seabios ata.c to learn how seabios booting OS from ata disk. some question i have:
- ATA used add_bcv_hd to add ata disk into IPL table. it's type is
IPL_TYPE_HARDDISK(0x02). It's vector is the driver id. how does seabios know the bootstrap vector based the driver ID?
add_bcv_hd() adds the drive to the BCV table, not the IPL table.
SeaBIOS populates the BCV table with built-in harddrives and optionroms with a BCV.
what does ata fill FDPT area for? Should my usbrom do the same?
It's some weird legacy thing. Nothing modern will require it. I don't know what legacy things will break without it.
For my usbrom, i should not use add_bcv to add option rom into IPL ? or just take the ata as example?
As above, you should use a BCV.
-- Jason Wang Peking University
-Kevin