summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLiam Merwick2019-01-15 13:18:06 +0100
committerPaolo Bonzini2019-02-05 16:50:16 +0100
commitab969087da65e2f67a546cfc664901eda7029e36 (patch)
treeb0c21a3ffeb0cee7a32102f9959671a05249ad42 /include
parentpvh: Add x86/HVM direct boot ABI header file (diff)
downloadqemu-ab969087da65e2f67a546cfc664901eda7029e36.tar.gz
qemu-ab969087da65e2f67a546cfc664901eda7029e36.tar.xz
qemu-ab969087da65e2f67a546cfc664901eda7029e36.zip
pvh: Boot uncompressed kernel using direct boot ABI
These changes (along with corresponding Linux kernel and qboot changes) enable a guest to be booted using the x86/HVM direct boot ABI. This commit adds a load_elfboot() routine to pass the size and location of the kernel entry point to qboot (which will fill in the start_info struct information needed to to boot the guest). Having loaded the ELF binary, load_linux() will run qboot which continues the boot. The address for the kernel entry point is read from an ELF Note in the uncompressed kernel binary by a helper routine passed to load_elf(). Co-developed-by: George Kennedy <George.Kennedy@oracle.com> Signed-off-by: George Kennedy <George.Kennedy@oracle.com> Signed-off-by: Liam Merwick <liam.merwick@oracle.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/elf.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/elf.h b/include/elf.h
index e816fb4d76..b35347eee7 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -1640,6 +1640,16 @@ typedef struct elf64_shdr {
#define NT_ARM_HW_WATCH 0x403 /* ARM hardware watchpoint registers */
#define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */
+/*
+ * Physical entry point into the kernel.
+ *
+ * 32bit entry point into the kernel. When requested to launch the
+ * guest kernel, use this entry point to launch the guest in 32-bit
+ * protected mode with paging disabled.
+ *
+ * [ Corresponding definition in Linux kernel: include/xen/interface/elfnote.h ]
+ */
+#define XEN_ELFNOTE_PHYS32_ENTRY 18 /* 0x12 */
/* Note header in a PT_NOTE section */
typedef struct elf32_note {