diff mbox series

i386: load kernel on xen using DMA

Message ID 20210426034709.595432-1-marmarek@invisiblethingslab.com (mailing list archive)
State New
Headers show
Series i386: load kernel on xen using DMA | expand

Commit Message

Marek Marczykowski-Górecki April 26, 2021, 3:47 a.m. UTC
Kernel on Xen is loaded via fw_cfg. Previously it used non-DMA version,
which loaded the kernel (and initramfs) byte by byte. Change this
to DMA, to load in bigger chunks.
This change alone reduces load time of a (big) kernel+initramfs from
~10s down to below 1s.

This change was suggested initially here:
Apparently this alone is already enough to get massive speedup.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
 hw/i386/pc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff mbox series


diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 8a84b25a03..14e43d4da4 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -839,7 +839,8 @@  void xen_load_linux(PCMachineState *pcms)
     assert(MACHINE(pcms)->kernel_filename != NULL);
-    fw_cfg = fw_cfg_init_io(FW_CFG_IO_BASE);
+    fw_cfg = fw_cfg_init_io_dma(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4,
+                                &address_space_memory);
     fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, x86ms->boot_cpus);