[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