From 48972f8cad24eb4462c97ea68003e2dd35be0444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20H=C3=A4hnel?= Date: Wed, 20 Oct 2021 14:55:04 +0200 Subject: [PATCH] optionrom: add a DMA-enabled multiboot ROM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Adam Lackorzynski [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 --- pc-bios/meson.build | 1 + pc-bios/multiboot_dma.bin | Bin 0 -> 1024 bytes pc-bios/optionrom/Makefile | 4 +- pc-bios/optionrom/multiboot.S | 4 +- pc-bios/optionrom/multiboot_dma.S | 2 + pc-bios/optionrom/optionrom.h | 66 ++++++++++++++++++++++++++++++ 6 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 pc-bios/multiboot_dma.bin create mode 100644 pc-bios/optionrom/multiboot_dma.S diff --git a/pc-bios/meson.build b/pc-bios/meson.build index a44c9bc127..b40ff3f2bd 100644 --- a/pc-bios/meson.build +++ b/pc-bios/meson.build @@ -63,6 +63,7 @@ blobs = files( 'petalogix-s3adsp1800.dtb', 'petalogix-ml605.dtb', 'multiboot.bin', + 'multiboot_dma.bin', 'linuxboot.bin', 'linuxboot_dma.bin', 'kvmvapic.bin', diff --git a/pc-bios/multiboot_dma.bin b/pc-bios/multiboot_dma.bin new file mode 100644 index 0000000000000000000000000000000000000000..c0e2c3102a3358207c61d3ae113524fb6007abc3 GIT binary patch literal 1024 zcmWGt#dMkhE0AGO3CIgzWP(XPVtNi|+kgdoPW0XQ^(U?8MB2dzENML#(+)mlN$Y%^ z#&|QW`K3Zy^BaS-gD+Y7UZ!=+tzk-IJe-==DaXLDn}Z>>Q;vn9TkZ~1YNs3}%z5_eB8FmS5}~qL$WNE5KN)qL$X} z%97T4pj1jNt(!H?@=%eWS{kz}N1ElKV)nGoLx%rfpHfR>uKn}+a9ZOlkQr$QUvZ_R zb&7E?q^9vRim@@I?OikAY!_00RR<--W&#eFyp;^u0*i!NHKWO8^u& zpil+{G7R&d=scLVgB_3basKn+h6e)Dc8RdQ=RX;^gNs3sf&WB6=L7x|X}cs?-*>a9 z@SlJL=$Gar0%