optionrom: add a DMA-enabled multiboot ROM

Add a new option rom for the multiboot loader, using DMA transfers to copy
data instead of "rep insb".

This significantly lowers QEMU's startup latency by a factor of about 40,
for example, going from 30sec to 0.8sec when loading modules of 120MB
in size.

Signed-off-by: Marcus Hähnel <marcus.haehnel@kernkonzept.com>
Signed-off-by: Adam Lackorzynski <adam@l4re.org>
[Modified to keep the non-DMA code depending on #ifdef USE_FW_CFG_DMA;
 do not write below stack. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Marcus Hähnel 2021-10-20 14:55:04 +02:00 committed by Paolo Bonzini
parent f014c97459
commit 48972f8cad
6 changed files with 72 additions and 5 deletions

View file

@ -0,0 +1,2 @@
#define USE_FW_CFG_DMA 1
#include "multiboot.S"