diff options
author | Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> | 2021-04-26 05:47:10 +0200 |
---|---|---|
committer | Anthony PERARD <anthony.perard@citrix.com> | 2024-03-12 14:13:08 +0000 |
commit | 918a7f706b69a8c725bac0694971d2831f688ebb (patch) | |
tree | 8d8b67bb5d07203e0b0a95cdc91e2662ea8bff0b | |
parent | 9253d83062268209533df4b29859e5b51a2dc324 (diff) | |
download | qemu-918a7f706b69a8c725bac0694971d2831f688ebb.zip qemu-918a7f706b69a8c725bac0694971d2831f688ebb.tar.gz qemu-918a7f706b69a8c725bac0694971d2831f688ebb.tar.bz2 |
i386: load kernel on xen using DMA
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:
https://lore.kernel.org/xen-devel/20180216204031.000052e9@gmail.com/
Apparently this alone is already enough to get massive speedup.
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
Message-Id: <20210426034709.595432-1-marmarek@invisiblethingslab.com>
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
-rw-r--r-- | hw/i386/pc.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/hw/i386/pc.c b/hw/i386/pc.c index f5ff970..4f322e0 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -718,7 +718,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); rom_set_fw(fw_cfg); |