aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--benchmark.h3
-rw-r--r--fw_cfg.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/benchmark.h b/benchmark.h
index 089c549..2be08e7 100644
--- a/benchmark.h
+++ b/benchmark.h
@@ -9,5 +9,6 @@
#define FW_START 1
#define LINUX_START_FWCFG 2
#define LINUX_START_BOOT 3
+#define LINUX_START_PVHBOOT 4
-#endif
+#endif /* BENCHMARK_H */
diff --git a/fw_cfg.c b/fw_cfg.c
index 09bb0d3..9304fd0 100644
--- a/fw_cfg.c
+++ b/fw_cfg.c
@@ -243,6 +243,12 @@ static void boot_pvh_from_fw_cfg(void)
fw_cfg_select(FW_CFG_KERNEL_ENTRY);
kernel_entry = (void *) fw_cfg_readl_le();
+#ifdef BENCHMARK_HACK
+ /* Exit just before jumping to vmlinux, so that it is easy
+ * to time/profile the firmware.
+ */
+ outb(LINUX_EXIT_PORT, LINUX_START_PVHBOOT);
+#endif
asm volatile("jmp *%2" : : "a" (0x2badb002),
"b"(&start_info), "c"(kernel_entry));
panic();