Commit 08377ed2 authored by Jason Andryuk's avatar Jason Andryuk Committed by Juergen Gross
Browse files

xen: sync elfnote.h from xen tree



Sync Xen's elfnote.h header from xen.git to pull in the
XEN_ELFNOTE_PHYS32_RELOC define.

xen commit dfc9fab00378 ("x86/PVH: Support relocatable dom0 kernels")

This is a copy except for the removal of the emacs editor config at the
end of the file.

Signed-off-by: default avatarJason Andryuk <jason.andryuk@amd.com>
Reviewed-by: default avatarJuergen Gross <jgross@suse.com>
Message-ID: <20240823193630.2583107-2-jason.andryuk@amd.com>
Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
parent 8f2f74f2
Loading
Loading
Loading
Loading
+88 −5
Original line number Diff line number Diff line
@@ -11,7 +11,9 @@
#define __XEN_PUBLIC_ELFNOTE_H__

/*
 * The notes should live in a SHT_NOTE segment and have "Xen" in the
 * `incontents 200 elfnotes ELF notes
 *
 * The notes should live in a PT_NOTE segment and have "Xen" in the
 * name field.
 *
 * Numeric types are either 4 or 8 bytes depending on the content of
@@ -22,6 +24,8 @@
 *
 * String values (for non-legacy) are NULL terminated ASCII, also known
 * as ASCIZ type.
 *
 * Xen only uses ELF Notes contained in x86 binaries.
 */

/*
@@ -52,7 +56,7 @@
#define XEN_ELFNOTE_VIRT_BASE      3

/*
 * The offset of the ELF paddr field from the acutal required
 * The offset of the ELF paddr field from the actual required
 * pseudo-physical address (numeric).
 *
 * This is used to maintain backwards compatibility with older kernels
@@ -92,7 +96,12 @@
#define XEN_ELFNOTE_LOADER         8

/*
 * The kernel supports PAE (x86/32 only, string = "yes" or "no").
 * The kernel supports PAE (x86/32 only, string = "yes", "no" or
 * "bimodal").
 *
 * For compatibility with Xen 3.0.3 and earlier the "bimodal" setting
 * may be given as "yes,bimodal" which will cause older Xen to treat
 * this kernel as PAE.
 *
 * LEGACY: PAE (n.b. The legacy interface included a provision to
 * indicate 'extended-cr3' support allowing L3 page tables to be
@@ -149,7 +158,9 @@
 * The (non-default) location the initial phys-to-machine map should be
 * placed at by the hypervisor (Dom0) or the tools (DomU).
 * The kernel must be prepared for this mapping to be established using
 * large pages, despite such otherwise not being available to guests.
 * large pages, despite such otherwise not being available to guests. Note
 * that these large pages may be misaligned in PFN space (they'll obviously
 * be aligned in MFN and virtual address spaces).
 * The kernel must also be able to handle the page table pages used for
 * this mapping not being accessible through the initial mapping.
 * (Only x86-64 supports this at present.)
@@ -185,9 +196,81 @@
 */
#define XEN_ELFNOTE_PHYS32_ENTRY 18

/*
 * Physical loading constraints for PVH kernels
 *
 * The presence of this note indicates the kernel supports relocating itself.
 *
 * The note may include up to three 32bit values to place constraints on the
 * guest physical loading addresses and alignment for a PVH kernel.  Values
 * are read in the following order:
 *  - a required start alignment (default 0x200000)
 *  - a minimum address for the start of the image (default 0; see below)
 *  - a maximum address for the last byte of the image (default 0xffffffff)
 *
 * When this note specifies an alignment value, it is used.  Otherwise the
 * maximum p_align value from loadable ELF Program Headers is used, if it is
 * greater than or equal to 4k (0x1000).  Otherwise, the default is used.
 */
#define XEN_ELFNOTE_PHYS32_RELOC 19

/*
 * The number of the highest elfnote defined.
 */
#define XEN_ELFNOTE_MAX XEN_ELFNOTE_PHYS32_ENTRY
#define XEN_ELFNOTE_MAX XEN_ELFNOTE_PHYS32_RELOC

/*
 * System information exported through crash notes.
 *
 * The kexec / kdump code will create one XEN_ELFNOTE_CRASH_INFO
 * note in case of a system crash. This note will contain various
 * information about the system, see xen/include/xen/elfcore.h.
 */
#define XEN_ELFNOTE_CRASH_INFO 0x1000001

/*
 * System registers exported through crash notes.
 *
 * The kexec / kdump code will create one XEN_ELFNOTE_CRASH_REGS
 * note per cpu in case of a system crash. This note is architecture
 * specific and will contain registers not saved in the "CORE" note.
 * See xen/include/xen/elfcore.h for more information.
 */
#define XEN_ELFNOTE_CRASH_REGS 0x1000002


/*
 * xen dump-core none note.
 * xm dump-core code will create one XEN_ELFNOTE_DUMPCORE_NONE
 * in its dump file to indicate that the file is xen dump-core
 * file. This note doesn't have any other information.
 * See tools/libxc/xc_core.h for more information.
 */
#define XEN_ELFNOTE_DUMPCORE_NONE               0x2000000

/*
 * xen dump-core header note.
 * xm dump-core code will create one XEN_ELFNOTE_DUMPCORE_HEADER
 * in its dump file.
 * See tools/libxc/xc_core.h for more information.
 */
#define XEN_ELFNOTE_DUMPCORE_HEADER             0x2000001

/*
 * xen dump-core xen version note.
 * xm dump-core code will create one XEN_ELFNOTE_DUMPCORE_XEN_VERSION
 * in its dump file. It contains the xen version obtained via the
 * XENVER hypercall.
 * See tools/libxc/xc_core.h for more information.
 */
#define XEN_ELFNOTE_DUMPCORE_XEN_VERSION        0x2000002

/*
 * xen dump-core format version note.
 * xm dump-core code will create one XEN_ELFNOTE_DUMPCORE_FORMAT_VERSION
 * in its dump file. It contains a format version identifier.
 * See tools/libxc/xc_core.h for more information.
 */
#define XEN_ELFNOTE_DUMPCORE_FORMAT_VERSION     0x2000003

#endif /* __XEN_PUBLIC_ELFNOTE_H__ */