1 ========== 1 ========== 2 VMCOREINFO 2 VMCOREINFO 3 ========== 3 ========== 4 4 5 What is it? 5 What is it? 6 =========== 6 =========== 7 7 8 VMCOREINFO is a special ELF note section. It c 8 VMCOREINFO is a special ELF note section. It contains various 9 information from the kernel like structure siz 9 information from the kernel like structure size, page size, symbol 10 values, field offsets, etc. These data are pac 10 values, field offsets, etc. These data are packed into an ELF note 11 section and used by user-space tools like cras 11 section and used by user-space tools like crash and makedumpfile to 12 analyze a kernel's memory layout. 12 analyze a kernel's memory layout. 13 13 14 Common variables 14 Common variables 15 ================ 15 ================ 16 16 17 init_uts_ns.name.release 17 init_uts_ns.name.release 18 ------------------------ 18 ------------------------ 19 19 20 The version of the Linux kernel. Used to find 20 The version of the Linux kernel. Used to find the corresponding source 21 code from which the kernel has been built. For 21 code from which the kernel has been built. For example, crash uses it to 22 find the corresponding vmlinux in order to pro 22 find the corresponding vmlinux in order to process vmcore. 23 23 24 PAGE_SIZE 24 PAGE_SIZE 25 --------- 25 --------- 26 26 27 The size of a page. It is the smallest unit of 27 The size of a page. It is the smallest unit of data used by the memory 28 management facilities. It is usually 4096 byte 28 management facilities. It is usually 4096 bytes of size and a page is 29 aligned on 4096 bytes. Used for computing page 29 aligned on 4096 bytes. Used for computing page addresses. 30 30 31 init_uts_ns 31 init_uts_ns 32 ----------- 32 ----------- 33 33 34 The UTS namespace which is used to isolate two 34 The UTS namespace which is used to isolate two specific elements of the 35 system that relate to the uname(2) system call 35 system that relate to the uname(2) system call. It is named after the 36 data structure used to store information retur 36 data structure used to store information returned by the uname(2) system 37 call. 37 call. 38 38 39 User-space tools can get the kernel name, host 39 User-space tools can get the kernel name, host name, kernel release 40 number, kernel version, architecture name and 40 number, kernel version, architecture name and OS type from it. 41 41 42 (uts_namespace, name) 42 (uts_namespace, name) 43 --------------------- 43 --------------------- 44 44 45 Offset of the name's member. Crash Utility and 45 Offset of the name's member. Crash Utility and Makedumpfile get 46 the start address of the init_uts_ns.name from 46 the start address of the init_uts_ns.name from this. 47 47 48 node_online_map 48 node_online_map 49 --------------- 49 --------------- 50 50 51 An array node_states[N_ONLINE] which represent 51 An array node_states[N_ONLINE] which represents the set of online nodes 52 in a system, one bit position per node number. 52 in a system, one bit position per node number. Used to keep track of 53 which nodes are in the system and online. 53 which nodes are in the system and online. 54 54 55 swapper_pg_dir 55 swapper_pg_dir 56 -------------- 56 -------------- 57 57 58 The global page directory pointer of the kerne 58 The global page directory pointer of the kernel. Used to translate 59 virtual to physical addresses. 59 virtual to physical addresses. 60 60 61 _stext 61 _stext 62 ------ 62 ------ 63 63 64 Defines the beginning of the text section. In 64 Defines the beginning of the text section. In general, _stext indicates 65 the kernel start address. Used to convert a vi 65 the kernel start address. Used to convert a virtual address from the 66 direct kernel map to a physical address. 66 direct kernel map to a physical address. 67 67 68 VMALLOC_START 68 VMALLOC_START 69 ------------- 69 ------------- 70 70 71 Stores the base address of vmalloc area. maked 71 Stores the base address of vmalloc area. makedumpfile gets this value 72 since is necessary for vmalloc translation. 72 since is necessary for vmalloc translation. 73 73 74 mem_map 74 mem_map 75 ------- 75 ------- 76 76 77 Physical addresses are translated to struct pa 77 Physical addresses are translated to struct pages by treating them as 78 an index into the mem_map array. Right-shiftin 78 an index into the mem_map array. Right-shifting a physical address 79 PAGE_SHIFT bits converts it into a page frame 79 PAGE_SHIFT bits converts it into a page frame number which is an index 80 into that mem_map array. 80 into that mem_map array. 81 81 82 Used to map an address to the corresponding st 82 Used to map an address to the corresponding struct page. 83 83 84 contig_page_data 84 contig_page_data 85 ---------------- 85 ---------------- 86 86 87 Makedumpfile gets the pglist_data structure fr 87 Makedumpfile gets the pglist_data structure from this symbol, which is 88 used to describe the memory layout. 88 used to describe the memory layout. 89 89 90 User-space tools use this to exclude free page 90 User-space tools use this to exclude free pages when dumping memory. 91 91 92 mem_section|(mem_section, NR_SECTION_ROOTS)|(m 92 mem_section|(mem_section, NR_SECTION_ROOTS)|(mem_section, section_mem_map) 93 ---------------------------------------------- 93 -------------------------------------------------------------------------- 94 94 95 The address of the mem_section array, its leng 95 The address of the mem_section array, its length, structure size, and 96 the section_mem_map offset. 96 the section_mem_map offset. 97 97 98 It exists in the sparse memory mapping model, 98 It exists in the sparse memory mapping model, and it is also somewhat 99 similar to the mem_map variable, both of them 99 similar to the mem_map variable, both of them are used to translate an 100 address. 100 address. 101 101 102 MAX_PHYSMEM_BITS 102 MAX_PHYSMEM_BITS 103 ---------------- 103 ---------------- 104 104 105 Defines the maximum supported physical address 105 Defines the maximum supported physical address space memory. 106 106 107 page 107 page 108 ---- 108 ---- 109 109 110 The size of a page structure. struct page is a 110 The size of a page structure. struct page is an important data structure 111 and it is widely used to compute contiguous me 111 and it is widely used to compute contiguous memory. 112 112 113 pglist_data 113 pglist_data 114 ----------- 114 ----------- 115 115 116 The size of a pglist_data structure. This valu 116 The size of a pglist_data structure. This value is used to check if the 117 pglist_data structure is valid. It is also use 117 pglist_data structure is valid. It is also used for checking the memory 118 type. 118 type. 119 119 120 zone 120 zone 121 ---- 121 ---- 122 122 123 The size of a zone structure. This value is us 123 The size of a zone structure. This value is used to check if the zone 124 structure has been found. It is also used for 124 structure has been found. It is also used for excluding free pages. 125 125 126 free_area 126 free_area 127 --------- 127 --------- 128 128 129 The size of a free_area structure. It indicate 129 The size of a free_area structure. It indicates whether the free_area 130 structure is valid or not. Useful when excludi 130 structure is valid or not. Useful when excluding free pages. 131 131 132 list_head 132 list_head 133 --------- 133 --------- 134 134 135 The size of a list_head structure. Used when i 135 The size of a list_head structure. Used when iterating lists in a 136 post-mortem analysis session. 136 post-mortem analysis session. 137 137 138 nodemask_t 138 nodemask_t 139 ---------- 139 ---------- 140 140 141 The size of a nodemask_t type. Used to compute 141 The size of a nodemask_t type. Used to compute the number of online 142 nodes. 142 nodes. 143 143 144 (page, flags|_refcount|mapping|lru|_mapcount|p 144 (page, flags|_refcount|mapping|lru|_mapcount|private|compound_order|compound_head) 145 ---------------------------------------------- 145 ---------------------------------------------------------------------------------- 146 146 147 User-space tools compute their values based on 147 User-space tools compute their values based on the offset of these 148 variables. The variables are used when excludi 148 variables. The variables are used when excluding unnecessary pages. 149 149 150 (pglist_data, node_zones|nr_zones|node_mem_map 150 (pglist_data, node_zones|nr_zones|node_mem_map|node_start_pfn|node_spanned_pages|node_id) 151 ---------------------------------------------- 151 ----------------------------------------------------------------------------------------- 152 152 153 On NUMA machines, each NUMA node has a pg_data 153 On NUMA machines, each NUMA node has a pg_data_t to describe its memory 154 layout. On UMA machines there is a single pgli 154 layout. On UMA machines there is a single pglist_data which describes the 155 whole memory. 155 whole memory. 156 156 157 These values are used to check the memory type 157 These values are used to check the memory type and to compute the 158 virtual address for memory map. 158 virtual address for memory map. 159 159 160 (zone, free_area|vm_stat|spanned_pages) 160 (zone, free_area|vm_stat|spanned_pages) 161 --------------------------------------- 161 --------------------------------------- 162 162 163 Each node is divided into a number of blocks c 163 Each node is divided into a number of blocks called zones which 164 represent ranges within memory. A zone is desc 164 represent ranges within memory. A zone is described by a structure zone. 165 165 166 User-space tools compute required values based 166 User-space tools compute required values based on the offset of these 167 variables. 167 variables. 168 168 169 (free_area, free_list) 169 (free_area, free_list) 170 ---------------------- 170 ---------------------- 171 171 172 Offset of the free_list's member. This value i 172 Offset of the free_list's member. This value is used to compute the number 173 of free pages. 173 of free pages. 174 174 175 Each zone has a free_area structure array call 175 Each zone has a free_area structure array called free_area[NR_PAGE_ORDERS]. 176 The free_list represents a linked list of free 176 The free_list represents a linked list of free page blocks. 177 177 178 (list_head, next|prev) 178 (list_head, next|prev) 179 ---------------------- 179 ---------------------- 180 180 181 Offsets of the list_head's members. list_head 181 Offsets of the list_head's members. list_head is used to define a 182 circular linked list. User-space tools need th 182 circular linked list. User-space tools need these in order to traverse 183 lists. 183 lists. 184 184 185 (vmap_area, va_start|list) 185 (vmap_area, va_start|list) 186 -------------------------- 186 -------------------------- 187 187 188 Offsets of the vmap_area's members. They carry 188 Offsets of the vmap_area's members. They carry vmalloc-specific 189 information. Makedumpfile gets the start addre 189 information. Makedumpfile gets the start address of the vmalloc region 190 from this. 190 from this. 191 191 192 (zone.free_area, NR_PAGE_ORDERS) 192 (zone.free_area, NR_PAGE_ORDERS) 193 -------------------------------- 193 -------------------------------- 194 194 195 Free areas descriptor. User-space tools use th 195 Free areas descriptor. User-space tools use this value to iterate the 196 free_area ranges. NR_PAGE_ORDERS is used by th 196 free_area ranges. NR_PAGE_ORDERS is used by the zone buddy allocator. 197 197 198 prb 198 prb 199 --- 199 --- 200 200 201 A pointer to the printk ringbuffer (struct pri 201 A pointer to the printk ringbuffer (struct printk_ringbuffer). This 202 may be pointing to the static boot ringbuffer 202 may be pointing to the static boot ringbuffer or the dynamically 203 allocated ringbuffer, depending on when the co 203 allocated ringbuffer, depending on when the core dump occurred. 204 Used by user-space tools to read the active ke 204 Used by user-space tools to read the active kernel log buffer. 205 205 206 printk_rb_static 206 printk_rb_static 207 ---------------- 207 ---------------- 208 208 209 A pointer to the static boot printk ringbuffer 209 A pointer to the static boot printk ringbuffer. If @prb has a 210 different value, this is useful for viewing th 210 different value, this is useful for viewing the initial boot messages, 211 which may have been overwritten in the dynamic 211 which may have been overwritten in the dynamically allocated 212 ringbuffer. 212 ringbuffer. 213 213 214 clear_seq 214 clear_seq 215 --------- 215 --------- 216 216 217 The sequence number of the printk() record aft 217 The sequence number of the printk() record after the last clear 218 command. It indicates the first record after t 218 command. It indicates the first record after the last 219 SYSLOG_ACTION_CLEAR, like issued by 'dmesg -c' 219 SYSLOG_ACTION_CLEAR, like issued by 'dmesg -c'. Used by user-space 220 tools to dump a subset of the dmesg log. 220 tools to dump a subset of the dmesg log. 221 221 222 printk_ringbuffer 222 printk_ringbuffer 223 ----------------- 223 ----------------- 224 224 225 The size of a printk_ringbuffer structure. Thi 225 The size of a printk_ringbuffer structure. This structure contains all 226 information required for accessing the various 226 information required for accessing the various components of the 227 kernel log buffer. 227 kernel log buffer. 228 228 229 (printk_ringbuffer, desc_ring|text_data_ring|d 229 (printk_ringbuffer, desc_ring|text_data_ring|dict_data_ring|fail) 230 ---------------------------------------------- 230 ----------------------------------------------------------------- 231 231 232 Offsets for the various components of the prin 232 Offsets for the various components of the printk ringbuffer. Used by 233 user-space tools to view the kernel log buffer 233 user-space tools to view the kernel log buffer without requiring the 234 declaration of the structure. 234 declaration of the structure. 235 235 236 prb_desc_ring 236 prb_desc_ring 237 ------------- 237 ------------- 238 238 239 The size of the prb_desc_ring structure. This 239 The size of the prb_desc_ring structure. This structure contains 240 information about the set of record descriptor 240 information about the set of record descriptors. 241 241 242 (prb_desc_ring, count_bits|descs|head_id|tail_ 242 (prb_desc_ring, count_bits|descs|head_id|tail_id) 243 ---------------------------------------------- 243 ------------------------------------------------- 244 244 245 Offsets for the fields describing the set of r 245 Offsets for the fields describing the set of record descriptors. Used 246 by user-space tools to be able to traverse the 246 by user-space tools to be able to traverse the descriptors without 247 requiring the declaration of the structure. 247 requiring the declaration of the structure. 248 248 249 prb_desc 249 prb_desc 250 -------- 250 -------- 251 251 252 The size of the prb_desc structure. This struc 252 The size of the prb_desc structure. This structure contains 253 information about a single record descriptor. 253 information about a single record descriptor. 254 254 255 (prb_desc, info|state_var|text_blk_lpos|dict_b 255 (prb_desc, info|state_var|text_blk_lpos|dict_blk_lpos) 256 ---------------------------------------------- 256 ------------------------------------------------------ 257 257 258 Offsets for the fields describing a record des 258 Offsets for the fields describing a record descriptors. Used by 259 user-space tools to be able to read descriptor 259 user-space tools to be able to read descriptors without requiring 260 the declaration of the structure. 260 the declaration of the structure. 261 261 262 prb_data_blk_lpos 262 prb_data_blk_lpos 263 ----------------- 263 ----------------- 264 264 265 The size of the prb_data_blk_lpos structure. T 265 The size of the prb_data_blk_lpos structure. This structure contains 266 information about where the text or dictionary 266 information about where the text or dictionary data (data block) is 267 located within the respective data ring. 267 located within the respective data ring. 268 268 269 (prb_data_blk_lpos, begin|next) 269 (prb_data_blk_lpos, begin|next) 270 ------------------------------- 270 ------------------------------- 271 271 272 Offsets for the fields describing the location 272 Offsets for the fields describing the location of a data block. Used 273 by user-space tools to be able to locate data 273 by user-space tools to be able to locate data blocks without 274 requiring the declaration of the structure. 274 requiring the declaration of the structure. 275 275 276 printk_info 276 printk_info 277 ----------- 277 ----------- 278 278 279 The size of the printk_info structure. This st 279 The size of the printk_info structure. This structure contains all 280 the meta-data for a record. 280 the meta-data for a record. 281 281 282 (printk_info, seq|ts_nsec|text_len|dict_len|ca 282 (printk_info, seq|ts_nsec|text_len|dict_len|caller_id) 283 ---------------------------------------------- 283 ------------------------------------------------------ 284 284 285 Offsets for the fields providing the meta-data 285 Offsets for the fields providing the meta-data for a record. Used by 286 user-space tools to be able to read the inform 286 user-space tools to be able to read the information without requiring 287 the declaration of the structure. 287 the declaration of the structure. 288 288 289 prb_data_ring 289 prb_data_ring 290 ------------- 290 ------------- 291 291 292 The size of the prb_data_ring structure. This 292 The size of the prb_data_ring structure. This structure contains 293 information about a set of data blocks. 293 information about a set of data blocks. 294 294 295 (prb_data_ring, size_bits|data|head_lpos|tail_ 295 (prb_data_ring, size_bits|data|head_lpos|tail_lpos) 296 ---------------------------------------------- 296 --------------------------------------------------- 297 297 298 Offsets for the fields describing a set of dat 298 Offsets for the fields describing a set of data blocks. Used by 299 user-space tools to be able to access the data 299 user-space tools to be able to access the data blocks without 300 requiring the declaration of the structure. 300 requiring the declaration of the structure. 301 301 302 atomic_long_t 302 atomic_long_t 303 ------------- 303 ------------- 304 304 305 The size of the atomic_long_t structure. Used 305 The size of the atomic_long_t structure. Used by user-space tools to 306 be able to copy the full structure, regardless 306 be able to copy the full structure, regardless of its 307 architecture-specific implementation. 307 architecture-specific implementation. 308 308 309 (atomic_long_t, counter) 309 (atomic_long_t, counter) 310 ------------------------ 310 ------------------------ 311 311 312 Offset for the long value of an atomic_long_t 312 Offset for the long value of an atomic_long_t variable. Used by 313 user-space tools to access the long value with 313 user-space tools to access the long value without requiring the 314 architecture-specific declaration. 314 architecture-specific declaration. 315 315 316 (free_area.free_list, MIGRATE_TYPES) 316 (free_area.free_list, MIGRATE_TYPES) 317 ------------------------------------ 317 ------------------------------------ 318 318 319 The number of migrate types for pages. The fre 319 The number of migrate types for pages. The free_list is described by the 320 array. Used by tools to compute the number of 320 array. Used by tools to compute the number of free pages. 321 321 322 NR_FREE_PAGES 322 NR_FREE_PAGES 323 ------------- 323 ------------- 324 324 325 On linux-2.6.21 or later, the number of free p 325 On linux-2.6.21 or later, the number of free pages is in 326 vm_stat[NR_FREE_PAGES]. Used to get the number 326 vm_stat[NR_FREE_PAGES]. Used to get the number of free pages. 327 327 328 PG_lru|PG_private|PG_swapcache|PG_swapbacked|P 328 PG_lru|PG_private|PG_swapcache|PG_swapbacked|PG_slab|PG_hwpoision|PG_head_mask|PG_hugetlb 329 ---------------------------------------------- 329 ----------------------------------------------------------------------------------------- 330 330 331 Page attributes. These flags are used to filte 331 Page attributes. These flags are used to filter various unnecessary for 332 dumping pages. 332 dumping pages. 333 333 334 PAGE_BUDDY_MAPCOUNT_VALUE(~PG_buddy)|PAGE_OFFL 334 PAGE_BUDDY_MAPCOUNT_VALUE(~PG_buddy)|PAGE_OFFLINE_MAPCOUNT_VALUE(~PG_offline) 335 ---------------------------------------------- 335 ----------------------------------------------------------------------------- 336 336 337 More page attributes. These flags are used to 337 More page attributes. These flags are used to filter various unnecessary for 338 dumping pages. 338 dumping pages. 339 339 340 340 341 x86_64 341 x86_64 342 ====== 342 ====== 343 343 344 phys_base 344 phys_base 345 --------- 345 --------- 346 346 347 Used to convert the virtual address of an expo 347 Used to convert the virtual address of an exported kernel symbol to its 348 corresponding physical address. 348 corresponding physical address. 349 349 350 init_top_pgt 350 init_top_pgt 351 ------------ 351 ------------ 352 352 353 Used to walk through the whole page table and 353 Used to walk through the whole page table and convert virtual addresses 354 to physical addresses. The init_top_pgt is som 354 to physical addresses. The init_top_pgt is somewhat similar to 355 swapper_pg_dir, but it is only used in x86_64. 355 swapper_pg_dir, but it is only used in x86_64. 356 356 357 pgtable_l5_enabled 357 pgtable_l5_enabled 358 ------------------ 358 ------------------ 359 359 360 User-space tools need to know whether the cras 360 User-space tools need to know whether the crash kernel was in 5-level 361 paging mode. 361 paging mode. 362 362 363 node_data 363 node_data 364 --------- 364 --------- 365 365 366 This is a struct pglist_data array and stores 366 This is a struct pglist_data array and stores all NUMA nodes 367 information. Makedumpfile gets the pglist_data 367 information. Makedumpfile gets the pglist_data structure from it. 368 368 369 (node_data, MAX_NUMNODES) 369 (node_data, MAX_NUMNODES) 370 ------------------------- 370 ------------------------- 371 371 372 The maximum number of nodes in system. 372 The maximum number of nodes in system. 373 373 374 KERNELOFFSET 374 KERNELOFFSET 375 ------------ 375 ------------ 376 376 377 The kernel randomization offset. Used to compu 377 The kernel randomization offset. Used to compute the page offset. If 378 KASLR is disabled, this value is zero. 378 KASLR is disabled, this value is zero. 379 379 380 KERNEL_IMAGE_SIZE 380 KERNEL_IMAGE_SIZE 381 ----------------- 381 ----------------- 382 382 383 Currently unused by Makedumpfile. Used to comp 383 Currently unused by Makedumpfile. Used to compute the module virtual 384 address by Crash. 384 address by Crash. 385 385 386 sme_mask 386 sme_mask 387 -------- 387 -------- 388 388 389 AMD-specific with SME support: it indicates th 389 AMD-specific with SME support: it indicates the secure memory encryption 390 mask. Makedumpfile tools need to know whether 390 mask. Makedumpfile tools need to know whether the crash kernel was 391 encrypted. If SME is enabled in the first kern 391 encrypted. If SME is enabled in the first kernel, the crash kernel's 392 page table entries (pgd/pud/pmd/pte) contain t 392 page table entries (pgd/pud/pmd/pte) contain the memory encryption 393 mask. This is used to remove the SME mask and 393 mask. This is used to remove the SME mask and obtain the true physical 394 address. 394 address. 395 395 396 Currently, sme_mask stores the value of the C- 396 Currently, sme_mask stores the value of the C-bit position. If needed, 397 additional SME-relevant info can be placed in 397 additional SME-relevant info can be placed in that variable. 398 398 399 For example:: 399 For example:: 400 400 401 [ misc ][ enc bit ][ other m 401 [ misc ][ enc bit ][ other misc SME info ] 402 0000_0000_0000_0000_1000_0000_0000_0000_0000 402 0000_0000_0000_0000_1000_0000_0000_0000_0000_0000_..._0000 403 63 59 55 51 47 43 39 35 31 403 63 59 55 51 47 43 39 35 31 27 ... 3 404 404 405 x86_32 405 x86_32 406 ====== 406 ====== 407 407 408 X86_PAE 408 X86_PAE 409 ------- 409 ------- 410 410 411 Denotes whether physical address extensions ar 411 Denotes whether physical address extensions are enabled. It has the cost 412 of a higher page table lookup overhead, and al 412 of a higher page table lookup overhead, and also consumes more page 413 table space per process. Used to check whether 413 table space per process. Used to check whether PAE was enabled in the 414 crash kernel when converting virtual addresses 414 crash kernel when converting virtual addresses to physical addresses. 415 415 416 ARM64 416 ARM64 417 ===== 417 ===== 418 418 419 VA_BITS 419 VA_BITS 420 ------- 420 ------- 421 421 422 The maximum number of bits for virtual address 422 The maximum number of bits for virtual addresses. Used to compute the 423 virtual memory ranges. 423 virtual memory ranges. 424 424 425 kimage_voffset 425 kimage_voffset 426 -------------- 426 -------------- 427 427 428 The offset between the kernel virtual and phys 428 The offset between the kernel virtual and physical mappings. Used to 429 translate virtual to physical addresses. 429 translate virtual to physical addresses. 430 430 431 PHYS_OFFSET 431 PHYS_OFFSET 432 ----------- 432 ----------- 433 433 434 Indicates the physical address of the start of 434 Indicates the physical address of the start of memory. Similar to 435 kimage_voffset, which is used to translate vir 435 kimage_voffset, which is used to translate virtual to physical 436 addresses. 436 addresses. 437 437 438 KERNELOFFSET 438 KERNELOFFSET 439 ------------ 439 ------------ 440 440 441 The kernel randomization offset. Used to compu 441 The kernel randomization offset. Used to compute the page offset. If 442 KASLR is disabled, this value is zero. 442 KASLR is disabled, this value is zero. 443 443 444 KERNELPACMASK 444 KERNELPACMASK 445 ------------- 445 ------------- 446 446 447 The mask to extract the Pointer Authentication 447 The mask to extract the Pointer Authentication Code from a kernel virtual 448 address. 448 address. 449 449 450 TCR_EL1.T1SZ 450 TCR_EL1.T1SZ 451 ------------ 451 ------------ 452 452 453 Indicates the size offset of the memory region 453 Indicates the size offset of the memory region addressed by TTBR1_EL1. 454 The region size is 2^(64-T1SZ) bytes. 454 The region size is 2^(64-T1SZ) bytes. 455 455 456 TTBR1_EL1 is the table base address register s 456 TTBR1_EL1 is the table base address register specified by ARMv8-A 457 architecture which is used to lookup the page- 457 architecture which is used to lookup the page-tables for the Virtual 458 addresses in the higher VA range (refer to ARM 458 addresses in the higher VA range (refer to ARMv8 ARM document for 459 more details). 459 more details). 460 460 461 MODULES_VADDR|MODULES_END|VMALLOC_START|VMALLO 461 MODULES_VADDR|MODULES_END|VMALLOC_START|VMALLOC_END|VMEMMAP_START|VMEMMAP_END 462 ---------------------------------------------- 462 ----------------------------------------------------------------------------- 463 463 464 Used to get the correct ranges: 464 Used to get the correct ranges: 465 MODULES_VADDR ~ MODULES_END-1 : Kernel 465 MODULES_VADDR ~ MODULES_END-1 : Kernel module space. 466 VMALLOC_START ~ VMALLOC_END-1 : vmallo 466 VMALLOC_START ~ VMALLOC_END-1 : vmalloc() / ioremap() space. 467 VMEMMAP_START ~ VMEMMAP_END-1 : vmemma 467 VMEMMAP_START ~ VMEMMAP_END-1 : vmemmap region, used for struct page array. 468 468 469 arm 469 arm 470 === 470 === 471 471 472 ARM_LPAE 472 ARM_LPAE 473 -------- 473 -------- 474 474 475 It indicates whether the crash kernel supports 475 It indicates whether the crash kernel supports large physical address 476 extensions. Used to translate virtual to physi 476 extensions. Used to translate virtual to physical addresses. 477 477 478 s390 478 s390 479 ==== 479 ==== 480 480 481 lowcore_ptr 481 lowcore_ptr 482 ----------- 482 ----------- 483 483 484 An array with a pointer to the lowcore of ever 484 An array with a pointer to the lowcore of every CPU. Used to print the 485 psw and all registers information. 485 psw and all registers information. 486 486 487 high_memory 487 high_memory 488 ----------- 488 ----------- 489 489 490 Used to get the vmalloc_start address from the 490 Used to get the vmalloc_start address from the high_memory symbol. 491 491 492 (lowcore_ptr, NR_CPUS) 492 (lowcore_ptr, NR_CPUS) 493 ---------------------- 493 ---------------------- 494 494 495 The maximum number of CPUs. 495 The maximum number of CPUs. 496 496 497 powerpc 497 powerpc 498 ======= 498 ======= 499 499 500 500 501 node_data|(node_data, MAX_NUMNODES) 501 node_data|(node_data, MAX_NUMNODES) 502 ----------------------------------- 502 ----------------------------------- 503 503 504 See above. 504 See above. 505 505 506 contig_page_data 506 contig_page_data 507 ---------------- 507 ---------------- 508 508 509 See above. 509 See above. 510 510 511 vmemmap_list 511 vmemmap_list 512 ------------ 512 ------------ 513 513 514 The vmemmap_list maintains the entire vmemmap 514 The vmemmap_list maintains the entire vmemmap physical mapping. Used 515 to get vmemmap list count and populated vmemma 515 to get vmemmap list count and populated vmemmap regions info. If the 516 vmemmap address translation information is sto 516 vmemmap address translation information is stored in the crash kernel, 517 it is used to translate vmemmap kernel virtual 517 it is used to translate vmemmap kernel virtual addresses. 518 518 519 mmu_vmemmap_psize 519 mmu_vmemmap_psize 520 ----------------- 520 ----------------- 521 521 522 The size of a page. Used to translate virtual 522 The size of a page. Used to translate virtual to physical addresses. 523 523 524 mmu_psize_defs 524 mmu_psize_defs 525 -------------- 525 -------------- 526 526 527 Page size definitions, i.e. 4k, 64k, or 16M. 527 Page size definitions, i.e. 4k, 64k, or 16M. 528 528 529 Used to make vtop translations. 529 Used to make vtop translations. 530 530 531 vmemmap_backing|(vmemmap_backing, list)|(vmemm 531 vmemmap_backing|(vmemmap_backing, list)|(vmemmap_backing, phys)|(vmemmap_backing, virt_addr) 532 ---------------------------------------------- 532 -------------------------------------------------------------------------------------------- 533 533 534 The vmemmap virtual address space management d 534 The vmemmap virtual address space management does not have a traditional 535 page table to track which virtual struct pages 535 page table to track which virtual struct pages are backed by a physical 536 mapping. The virtual to physical mappings are 536 mapping. The virtual to physical mappings are tracked in a simple linked 537 list format. 537 list format. 538 538 539 User-space tools need to know the offset of li 539 User-space tools need to know the offset of list, phys and virt_addr 540 when computing the count of vmemmap regions. 540 when computing the count of vmemmap regions. 541 541 542 mmu_psize_def|(mmu_psize_def, shift) 542 mmu_psize_def|(mmu_psize_def, shift) 543 ------------------------------------ 543 ------------------------------------ 544 544 545 The size of a struct mmu_psize_def and the off 545 The size of a struct mmu_psize_def and the offset of mmu_psize_def's 546 member. 546 member. 547 547 548 Used in vtop translations. 548 Used in vtop translations. 549 549 550 sh 550 sh 551 == 551 == 552 552 553 node_data|(node_data, MAX_NUMNODES) 553 node_data|(node_data, MAX_NUMNODES) 554 ----------------------------------- 554 ----------------------------------- 555 555 556 See above. 556 See above. 557 557 558 X2TLB 558 X2TLB 559 ----- 559 ----- 560 560 561 Indicates whether the crashed kernel enabled S 561 Indicates whether the crashed kernel enabled SH extended mode. 562 562 563 RISCV64 563 RISCV64 564 ======= 564 ======= 565 565 566 VA_BITS 566 VA_BITS 567 ------- 567 ------- 568 568 569 The maximum number of bits for virtual address 569 The maximum number of bits for virtual addresses. Used to compute the 570 virtual memory ranges. 570 virtual memory ranges. 571 571 572 PAGE_OFFSET 572 PAGE_OFFSET 573 ----------- 573 ----------- 574 574 575 Indicates the virtual kernel start address of 575 Indicates the virtual kernel start address of the direct-mapped RAM region. 576 576 577 phys_ram_base 577 phys_ram_base 578 ------------- 578 ------------- 579 579 580 Indicates the start physical RAM address. 580 Indicates the start physical RAM address. 581 581 582 MODULES_VADDR|MODULES_END|VMALLOC_START|VMALLO 582 MODULES_VADDR|MODULES_END|VMALLOC_START|VMALLOC_END|VMEMMAP_START|VMEMMAP_END|KERNEL_LINK_ADDR 583 ---------------------------------------------- 583 ---------------------------------------------------------------------------------------------- 584 584 585 Used to get the correct ranges: 585 Used to get the correct ranges: 586 586 587 * MODULES_VADDR ~ MODULES_END : Kernel modul 587 * MODULES_VADDR ~ MODULES_END : Kernel module space. 588 * VMALLOC_START ~ VMALLOC_END : vmalloc() / 588 * VMALLOC_START ~ VMALLOC_END : vmalloc() / ioremap() space. 589 * VMEMMAP_START ~ VMEMMAP_END : vmemmap spac 589 * VMEMMAP_START ~ VMEMMAP_END : vmemmap space, used for struct page array. 590 * KERNEL_LINK_ADDR : start address of Kernel 590 * KERNEL_LINK_ADDR : start address of Kernel link and BPF 591 591 592 va_kernel_pa_offset 592 va_kernel_pa_offset 593 ------------------- 593 ------------------- 594 594 595 Indicates the offset between the kernel virtua 595 Indicates the offset between the kernel virtual and physical mappings. 596 Used to translate virtual to physical addresse 596 Used to translate virtual to physical addresses.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.