cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

elfnote.h (5384B)


      1/* SPDX-License-Identifier: MIT */
      2/******************************************************************************
      3 * elfnote.h
      4 *
      5 * Definitions used for the Xen ELF notes.
      6 *
      7 * Copyright (c) 2006, Ian Campbell, XenSource Ltd.
      8 */
      9
     10#ifndef __XEN_PUBLIC_ELFNOTE_H__
     11#define __XEN_PUBLIC_ELFNOTE_H__
     12
     13/*
     14 * The notes should live in a SHT_NOTE segment and have "Xen" in the
     15 * name field.
     16 *
     17 * Numeric types are either 4 or 8 bytes depending on the content of
     18 * the desc field.
     19 *
     20 * LEGACY indicated the fields in the legacy __xen_guest string which
     21 * this a note type replaces.
     22 *
     23 * String values (for non-legacy) are NULL terminated ASCII, also known
     24 * as ASCIZ type.
     25 */
     26
     27/*
     28 * NAME=VALUE pair (string).
     29 */
     30#define XEN_ELFNOTE_INFO           0
     31
     32/*
     33 * The virtual address of the entry point (numeric).
     34 *
     35 * LEGACY: VIRT_ENTRY
     36 */
     37#define XEN_ELFNOTE_ENTRY          1
     38
     39/* The virtual address of the hypercall transfer page (numeric).
     40 *
     41 * LEGACY: HYPERCALL_PAGE. (n.b. legacy value is a physical page
     42 * number not a virtual address)
     43 */
     44#define XEN_ELFNOTE_HYPERCALL_PAGE 2
     45
     46/* The virtual address where the kernel image should be mapped (numeric).
     47 *
     48 * Defaults to 0.
     49 *
     50 * LEGACY: VIRT_BASE
     51 */
     52#define XEN_ELFNOTE_VIRT_BASE      3
     53
     54/*
     55 * The offset of the ELF paddr field from the acutal required
     56 * pseudo-physical address (numeric).
     57 *
     58 * This is used to maintain backwards compatibility with older kernels
     59 * which wrote __PAGE_OFFSET into that field. This field defaults to 0
     60 * if not present.
     61 *
     62 * LEGACY: ELF_PADDR_OFFSET. (n.b. legacy default is VIRT_BASE)
     63 */
     64#define XEN_ELFNOTE_PADDR_OFFSET   4
     65
     66/*
     67 * The version of Xen that we work with (string).
     68 *
     69 * LEGACY: XEN_VER
     70 */
     71#define XEN_ELFNOTE_XEN_VERSION    5
     72
     73/*
     74 * The name of the guest operating system (string).
     75 *
     76 * LEGACY: GUEST_OS
     77 */
     78#define XEN_ELFNOTE_GUEST_OS       6
     79
     80/*
     81 * The version of the guest operating system (string).
     82 *
     83 * LEGACY: GUEST_VER
     84 */
     85#define XEN_ELFNOTE_GUEST_VERSION  7
     86
     87/*
     88 * The loader type (string).
     89 *
     90 * LEGACY: LOADER
     91 */
     92#define XEN_ELFNOTE_LOADER         8
     93
     94/*
     95 * The kernel supports PAE (x86/32 only, string = "yes" or "no").
     96 *
     97 * LEGACY: PAE (n.b. The legacy interface included a provision to
     98 * indicate 'extended-cr3' support allowing L3 page tables to be
     99 * placed above 4G. It is assumed that any kernel new enough to use
    100 * these ELF notes will include this and therefore "yes" here is
    101 * equivalent to "yes[entended-cr3]" in the __xen_guest interface.
    102 */
    103#define XEN_ELFNOTE_PAE_MODE       9
    104
    105/*
    106 * The features supported/required by this kernel (string).
    107 *
    108 * The string must consist of a list of feature names (as given in
    109 * features.h, without the "XENFEAT_" prefix) separated by '|'
    110 * characters. If a feature is required for the kernel to function
    111 * then the feature name must be preceded by a '!' character.
    112 *
    113 * LEGACY: FEATURES
    114 */
    115#define XEN_ELFNOTE_FEATURES      10
    116
    117/*
    118 * The kernel requires the symbol table to be loaded (string = "yes" or "no")
    119 * LEGACY: BSD_SYMTAB (n.b. The legacy treated the presence or absence
    120 * of this string as a boolean flag rather than requiring "yes" or
    121 * "no".
    122 */
    123#define XEN_ELFNOTE_BSD_SYMTAB    11
    124
    125/*
    126 * The lowest address the hypervisor hole can begin at (numeric).
    127 *
    128 * This must not be set higher than HYPERVISOR_VIRT_START. Its presence
    129 * also indicates to the hypervisor that the kernel can deal with the
    130 * hole starting at a higher address.
    131 */
    132#define XEN_ELFNOTE_HV_START_LOW  12
    133
    134/*
    135 * List of maddr_t-sized mask/value pairs describing how to recognize
    136 * (non-present) L1 page table entries carrying valid MFNs (numeric).
    137 */
    138#define XEN_ELFNOTE_L1_MFN_VALID  13
    139
    140/*
    141 * Whether or not the guest supports cooperative suspend cancellation.
    142 * This is a numeric value.
    143 *
    144 * Default is 0
    145 */
    146#define XEN_ELFNOTE_SUSPEND_CANCEL 14
    147
    148/*
    149 * The (non-default) location the initial phys-to-machine map should be
    150 * placed at by the hypervisor (Dom0) or the tools (DomU).
    151 * The kernel must be prepared for this mapping to be established using
    152 * large pages, despite such otherwise not being available to guests.
    153 * The kernel must also be able to handle the page table pages used for
    154 * this mapping not being accessible through the initial mapping.
    155 * (Only x86-64 supports this at present.)
    156 */
    157#define XEN_ELFNOTE_INIT_P2M      15
    158
    159/*
    160 * Whether or not the guest can deal with being passed an initrd not
    161 * mapped through its initial page tables.
    162 */
    163#define XEN_ELFNOTE_MOD_START_PFN 16
    164
    165/*
    166 * The features supported by this kernel (numeric).
    167 *
    168 * Other than XEN_ELFNOTE_FEATURES on pre-4.2 Xen, this note allows a
    169 * kernel to specify support for features that older hypervisors don't
    170 * know about. The set of features 4.2 and newer hypervisors will
    171 * consider supported by the kernel is the combination of the sets
    172 * specified through this and the string note.
    173 *
    174 * LEGACY: FEATURES
    175 */
    176#define XEN_ELFNOTE_SUPPORTED_FEATURES 17
    177
    178/*
    179 * Physical entry point into the kernel.
    180 *
    181 * 32bit entry point into the kernel. When requested to launch the
    182 * guest kernel in a HVM container, Xen will use this entry point to
    183 * launch the guest in 32bit protected mode with paging disabled.
    184 * Ignored otherwise.
    185 */
    186#define XEN_ELFNOTE_PHYS32_ENTRY 18
    187
    188/*
    189 * The number of the highest elfnote defined.
    190 */
    191#define XEN_ELFNOTE_MAX XEN_ELFNOTE_PHYS32_ENTRY
    192
    193#endif /* __XEN_PUBLIC_ELFNOTE_H__ */