aboutsummaryrefslogtreecommitdiff
path: root/src/fw/paravirt.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fw/paravirt.c')
-rw-r--r--src/fw/paravirt.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/fw/paravirt.c b/src/fw/paravirt.c
index 00e327d..569fd25 100644
--- a/src/fw/paravirt.c
+++ b/src/fw/paravirt.c
@@ -18,6 +18,7 @@
#include "output.h" // dprintf
#include "paravirt.h" // qemu_cfg_preinit
#include "romfile.h" // romfile_loadint
+#include "romfile_loader.h" // romfile_loader_execute
#include "string.h" // memset
#include "util.h" // pci_setup
#include "x86.h" // cpuid
@@ -147,6 +148,27 @@ qemu_platform_setup(void)
pirtable_setup();
mptable_setup();
smbios_setup();
+
+ if (CONFIG_FW_ROMFILE_LOAD) {
+ int loader_err;
+
+ dprintf(3, "load ACPI tables\n");
+
+ loader_err = romfile_loader_execute("etc/table-loader");
+
+ RsdpAddr = find_acpi_rsdp();
+
+ if (RsdpAddr)
+ return;
+
+ /* If present, loader should have installed an RSDP.
+ * Not installed? We might still be able to continue
+ * using the builtin RSDP.
+ */
+ if (!loader_err)
+ warn_internalerror();
+ }
+
acpi_setup();
}