[SeaBIOS] Reducing SeaBIOS kernel entry time

Kevin O'Connor kevin at koconnor.net
Thu Jul 9 17:33:50 CEST 2015


On Thu, Jul 09, 2015 at 10:45:23AM +0200, Gerd Hoffmann wrote:
>   Hi,
> 
> > The conclusion is that the main bottleneck to boot QEMU is fw_cfg.
> 
> https://www.kraxel.org/cgit/qemu/log/?h=rebase/fw-cfg-dma-wip
> 
> Some experimental (and untested) bits implementing a dma interface for
> fw_cfg (also some unrelated fw_cfg stuff).
> 
> You might want try wire that up for x86 and see how it speeds up
> things ...

Interesting.  This probably isn't the right place to discuss the
implementation, but I have a couple of comments on the dma interface.

The interface doesn't have a "skip" field and that's quite helpful in
the firmware to avoid having to memmove stuff around.  (So, instead of
select/addr/len it would be preferable to have
select/addr/offset/len.)

Have you considered using a transfer descriptor struct and dma'ing
that?  That is, use just two 32bit IO registers (descriptor addr high
/ descriptor addr low, active on write to low register) and then
define a descriptor struct with the select, target addr, offset, len,
and status fields - fw_cfg could then read the descriptor struct,
perform the requested action, and then update the descriptor struct
upon completion.

Cheers,
-Kevin



More information about the SeaBIOS mailing list