[SeaBIOS] [PATCH 3/5] paravirt: Split QEMU FW configuration initialisation
Rob Bradford
robert.bradford at intel.com
Thu Nov 29 18:37:44 CET 2018
Split detection of QEMU FW CFG into two phases: detection and parsing of
complex structures. The qemu_cfg_preinit() function does not require
malloc() to be available.
Signed-off-by: Rob Bradford <robert.bradford at intel.com>
---
src/fw/paravirt.c | 11 +++++++++--
src/fw/paravirt.h | 1 +
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/fw/paravirt.c b/src/fw/paravirt.c
index 597bd1c..7044378 100644
--- a/src/fw/paravirt.c
+++ b/src/fw/paravirt.c
@@ -124,6 +124,8 @@ qemu_preinit(void)
kvm_detect();
}
+ qemu_cfg_preinit();
+
// On emulators, get memory size from nvram.
u32 rs = ((rtc_read(CMOS_MEM_EXTMEM2_LOW) << 16)
| (rtc_read(CMOS_MEM_EXTMEM2_HIGH) << 24));
@@ -571,8 +573,7 @@ struct QemuCfgFile {
char name[56];
};
-void qemu_cfg_init(void)
-{
+void qemu_cfg_preinit(void) {
if (!runningOnQEMU())
return;
@@ -595,6 +596,12 @@ void qemu_cfg_init(void)
dprintf(1, "QEMU fw_cfg DMA interface supported\n");
cfg_dma_enabled = 1;
}
+}
+
+void qemu_cfg_init(void)
+{
+ if (!qemu_cfg_enabled())
+ return;
// Populate romfiles for legacy fw_cfg entries
qemu_cfg_legacy();
diff --git a/src/fw/paravirt.h b/src/fw/paravirt.h
index a14d83e..2c4792a 100644
--- a/src/fw/paravirt.h
+++ b/src/fw/paravirt.h
@@ -54,6 +54,7 @@ int qemu_cfg_dma_enabled(void);
void qemu_preinit(void);
void qemu_platform_setup(void);
void qemu_cfg_init(void);
+void qemu_cfg_preinit(void);
u16 qemu_get_present_cpus_count(void);
int qemu_cfg_write_file(void *src, struct romfile_s *file, u32 offset, u32 len);
--
2.19.2
More information about the SeaBIOS
mailing list