Stefan Hajnoczi wrote:
Hi, qboot (https://github.com/bonzini/qboot) is a stripped down firmware providing only what is needed to boot a Linux kernel on x86.
Incredible, you have re-invented coreboot!
Well, maybe not, it is Red Hat after all.
How about putting your efforts into the existing project instead, that way you can also draw on the significant experience within that project.
If you want to optimize for the Linux special case then you should not be using anything BIOS-related at all.
Try coreboot with kernel as payload.
//Peter
On 03/07/2015 11:43, Peter Stuge wrote:
Hi, qboot (https://github.com/bonzini/qboot) is a stripped down firmware providing only what is needed to boot a Linux kernel on x86.
Incredible, you have re-invented coreboot!
I'm pretty sure I didn't, unless you count reusing the cbfs format as reinventing coreboot.
Well, maybe not, it is Red Hat after all.
How about putting your efforts into the existing project instead, that way you can also draw on the significant experience within that project.
If you want to optimize for the Linux special case then you should not be using anything BIOS-related at all.
Indeed qboot is not a BIOS, it only provides a couple 16-bit services that Linux needs (e820 and int 10h tty write).
Try coreboot with kernel as payload.
Tried that. Coreboot takes about 250 ms to pass control to the payload, and there's hardly any option to remove unnecessary hardware setup. SeaBIOS takes 165 ms with a vanilla configuration, but there are options to remove unnecessary drivers. qboot takes 20 ms.
Paolo
On Fri, Jul 03, 2015 at 11:43:22AM +0200, Peter Stuge wrote:
If you want to optimize for the Linux special case then you should not be using anything BIOS-related at all.
There seems to be a common misunderstanding that supporting the BIOS negatively impacts boot times. This is not so - the BIOS is just a library of functions in memory - they do not materially impact the boot time if they are not used.
Instead, boot times are dominated by hardware initialization delays. (I've run many tests, and I've found the core SeaBIOS code does not add more than 1 or 2 ms to the boot time - at most.) And, SeaBIOS is actually quite good at optimizing hardware initialization time by using its "thread" system (really coroutines).
-Kevin
On Fri, Jul 3, 2015 at 10:43 AM, Peter Stuge peter@stuge.se wrote:
If you want to optimize for the Linux special case then you should not be using anything BIOS-related at all.
Good idea. The 32-bit or 64-bit kernel entry point should be used instead of the 16-bit entry point.
My reading of Linux Documentation/x86/boot.txt and arch/x86/boot/ is that the 32-bit entry point bypasses the BIOS interrupts. The loader must provide the e820 map and edd info in the Linux boot_params struct.
Try coreboot with kernel as payload.
Coreboot does seem more appropriate than SeaBIOS if the BIOS interface is avoided entirely. The question is how much the 250 ms kernel entry time that Paolo mentioned can be reduced...
Stefan