Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/xen/interface/elfnote.h
26282 views
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
* `incontents 200 elfnotes ELF notes
15
*
16
* The notes should live in a PT_NOTE segment and have "Xen" in the
17
* name field.
18
*
19
* Numeric types are either 4 or 8 bytes depending on the content of
20
* the desc field.
21
*
22
* LEGACY indicated the fields in the legacy __xen_guest string which
23
* this a note type replaces.
24
*
25
* String values (for non-legacy) are NULL terminated ASCII, also known
26
* as ASCIZ type.
27
*
28
* Xen only uses ELF Notes contained in x86 binaries.
29
*/
30
31
/*
32
* NAME=VALUE pair (string).
33
*/
34
#define XEN_ELFNOTE_INFO 0
35
36
/*
37
* The virtual address of the entry point (numeric).
38
*
39
* LEGACY: VIRT_ENTRY
40
*/
41
#define XEN_ELFNOTE_ENTRY 1
42
43
/* The virtual address of the hypercall transfer page (numeric).
44
*
45
* LEGACY: HYPERCALL_PAGE. (n.b. legacy value is a physical page
46
* number not a virtual address)
47
*/
48
#define XEN_ELFNOTE_HYPERCALL_PAGE 2
49
50
/* The virtual address where the kernel image should be mapped (numeric).
51
*
52
* Defaults to 0.
53
*
54
* LEGACY: VIRT_BASE
55
*/
56
#define XEN_ELFNOTE_VIRT_BASE 3
57
58
/*
59
* The offset of the ELF paddr field from the actual required
60
* pseudo-physical address (numeric).
61
*
62
* This is used to maintain backwards compatibility with older kernels
63
* which wrote __PAGE_OFFSET into that field. This field defaults to 0
64
* if not present.
65
*
66
* LEGACY: ELF_PADDR_OFFSET. (n.b. legacy default is VIRT_BASE)
67
*/
68
#define XEN_ELFNOTE_PADDR_OFFSET 4
69
70
/*
71
* The version of Xen that we work with (string).
72
*
73
* LEGACY: XEN_VER
74
*/
75
#define XEN_ELFNOTE_XEN_VERSION 5
76
77
/*
78
* The name of the guest operating system (string).
79
*
80
* LEGACY: GUEST_OS
81
*/
82
#define XEN_ELFNOTE_GUEST_OS 6
83
84
/*
85
* The version of the guest operating system (string).
86
*
87
* LEGACY: GUEST_VER
88
*/
89
#define XEN_ELFNOTE_GUEST_VERSION 7
90
91
/*
92
* The loader type (string).
93
*
94
* LEGACY: LOADER
95
*/
96
#define XEN_ELFNOTE_LOADER 8
97
98
/*
99
* The kernel supports PAE (x86/32 only, string = "yes", "no" or
100
* "bimodal").
101
*
102
* For compatibility with Xen 3.0.3 and earlier the "bimodal" setting
103
* may be given as "yes,bimodal" which will cause older Xen to treat
104
* this kernel as PAE.
105
*
106
* LEGACY: PAE (n.b. The legacy interface included a provision to
107
* indicate 'extended-cr3' support allowing L3 page tables to be
108
* placed above 4G. It is assumed that any kernel new enough to use
109
* these ELF notes will include this and therefore "yes" here is
110
* equivalent to "yes[entended-cr3]" in the __xen_guest interface.
111
*/
112
#define XEN_ELFNOTE_PAE_MODE 9
113
114
/*
115
* The features supported/required by this kernel (string).
116
*
117
* The string must consist of a list of feature names (as given in
118
* features.h, without the "XENFEAT_" prefix) separated by '|'
119
* characters. If a feature is required for the kernel to function
120
* then the feature name must be preceded by a '!' character.
121
*
122
* LEGACY: FEATURES
123
*/
124
#define XEN_ELFNOTE_FEATURES 10
125
126
/*
127
* The kernel requires the symbol table to be loaded (string = "yes" or "no")
128
* LEGACY: BSD_SYMTAB (n.b. The legacy treated the presence or absence
129
* of this string as a boolean flag rather than requiring "yes" or
130
* "no".
131
*/
132
#define XEN_ELFNOTE_BSD_SYMTAB 11
133
134
/*
135
* The lowest address the hypervisor hole can begin at (numeric).
136
*
137
* This must not be set higher than HYPERVISOR_VIRT_START. Its presence
138
* also indicates to the hypervisor that the kernel can deal with the
139
* hole starting at a higher address.
140
*/
141
#define XEN_ELFNOTE_HV_START_LOW 12
142
143
/*
144
* List of maddr_t-sized mask/value pairs describing how to recognize
145
* (non-present) L1 page table entries carrying valid MFNs (numeric).
146
*/
147
#define XEN_ELFNOTE_L1_MFN_VALID 13
148
149
/*
150
* Whether or not the guest supports cooperative suspend cancellation.
151
* This is a numeric value.
152
*
153
* Default is 0
154
*/
155
#define XEN_ELFNOTE_SUSPEND_CANCEL 14
156
157
/*
158
* The (non-default) location the initial phys-to-machine map should be
159
* placed at by the hypervisor (Dom0) or the tools (DomU).
160
* The kernel must be prepared for this mapping to be established using
161
* large pages, despite such otherwise not being available to guests. Note
162
* that these large pages may be misaligned in PFN space (they'll obviously
163
* be aligned in MFN and virtual address spaces).
164
* The kernel must also be able to handle the page table pages used for
165
* this mapping not being accessible through the initial mapping.
166
* (Only x86-64 supports this at present.)
167
*/
168
#define XEN_ELFNOTE_INIT_P2M 15
169
170
/*
171
* Whether or not the guest can deal with being passed an initrd not
172
* mapped through its initial page tables.
173
*/
174
#define XEN_ELFNOTE_MOD_START_PFN 16
175
176
/*
177
* The features supported by this kernel (numeric).
178
*
179
* Other than XEN_ELFNOTE_FEATURES on pre-4.2 Xen, this note allows a
180
* kernel to specify support for features that older hypervisors don't
181
* know about. The set of features 4.2 and newer hypervisors will
182
* consider supported by the kernel is the combination of the sets
183
* specified through this and the string note.
184
*
185
* LEGACY: FEATURES
186
*/
187
#define XEN_ELFNOTE_SUPPORTED_FEATURES 17
188
189
/*
190
* Physical entry point into the kernel.
191
*
192
* 32bit entry point into the kernel. When requested to launch the
193
* guest kernel in a HVM container, Xen will use this entry point to
194
* launch the guest in 32bit protected mode with paging disabled.
195
* Ignored otherwise.
196
*/
197
#define XEN_ELFNOTE_PHYS32_ENTRY 18
198
199
/*
200
* Physical loading constraints for PVH kernels
201
*
202
* The presence of this note indicates the kernel supports relocating itself.
203
*
204
* The note may include up to three 32bit values to place constraints on the
205
* guest physical loading addresses and alignment for a PVH kernel. Values
206
* are read in the following order:
207
* - a required start alignment (default 0x200000)
208
* - a minimum address for the start of the image (default 0; see below)
209
* - a maximum address for the last byte of the image (default 0xffffffff)
210
*
211
* When this note specifies an alignment value, it is used. Otherwise the
212
* maximum p_align value from loadable ELF Program Headers is used, if it is
213
* greater than or equal to 4k (0x1000). Otherwise, the default is used.
214
*/
215
#define XEN_ELFNOTE_PHYS32_RELOC 19
216
217
/*
218
* The number of the highest elfnote defined.
219
*/
220
#define XEN_ELFNOTE_MAX XEN_ELFNOTE_PHYS32_RELOC
221
222
/*
223
* System information exported through crash notes.
224
*
225
* The kexec / kdump code will create one XEN_ELFNOTE_CRASH_INFO
226
* note in case of a system crash. This note will contain various
227
* information about the system, see xen/include/xen/elfcore.h.
228
*/
229
#define XEN_ELFNOTE_CRASH_INFO 0x1000001
230
231
/*
232
* System registers exported through crash notes.
233
*
234
* The kexec / kdump code will create one XEN_ELFNOTE_CRASH_REGS
235
* note per cpu in case of a system crash. This note is architecture
236
* specific and will contain registers not saved in the "CORE" note.
237
* See xen/include/xen/elfcore.h for more information.
238
*/
239
#define XEN_ELFNOTE_CRASH_REGS 0x1000002
240
241
242
/*
243
* xen dump-core none note.
244
* xm dump-core code will create one XEN_ELFNOTE_DUMPCORE_NONE
245
* in its dump file to indicate that the file is xen dump-core
246
* file. This note doesn't have any other information.
247
* See tools/libxc/xc_core.h for more information.
248
*/
249
#define XEN_ELFNOTE_DUMPCORE_NONE 0x2000000
250
251
/*
252
* xen dump-core header note.
253
* xm dump-core code will create one XEN_ELFNOTE_DUMPCORE_HEADER
254
* in its dump file.
255
* See tools/libxc/xc_core.h for more information.
256
*/
257
#define XEN_ELFNOTE_DUMPCORE_HEADER 0x2000001
258
259
/*
260
* xen dump-core xen version note.
261
* xm dump-core code will create one XEN_ELFNOTE_DUMPCORE_XEN_VERSION
262
* in its dump file. It contains the xen version obtained via the
263
* XENVER hypercall.
264
* See tools/libxc/xc_core.h for more information.
265
*/
266
#define XEN_ELFNOTE_DUMPCORE_XEN_VERSION 0x2000002
267
268
/*
269
* xen dump-core format version note.
270
* xm dump-core code will create one XEN_ELFNOTE_DUMPCORE_FORMAT_VERSION
271
* in its dump file. It contains a format version identifier.
272
* See tools/libxc/xc_core.h for more information.
273
*/
274
#define XEN_ELFNOTE_DUMPCORE_FORMAT_VERSION 0x2000003
275
276
#endif /* __XEN_PUBLIC_ELFNOTE_H__ */
277
278