• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * debug_kinfo.h - backup kernel information for bootloader usage
4  *
5  * Copyright 2021 Google LLC
6  */
7 
8 #ifndef DEBUG_KINFO_H
9 #define DEBUG_KINFO_H
10 
11 #include <linux/utsname.h>
12 
13 #define BUILD_INFO_LEN		256
14 #define DEBUG_KINFO_MAGIC	0xCCEEDDFF
15 
16 /*
17  * Header structure must be byte-packed, since the table is provided to
18  * bootloader.
19  */
20 struct kernel_info {
21 	/* For kallsyms */
22 	__u8 enabled_all;
23 	__u8 enabled_base_relative;
24 	__u8 enabled_absolute_percpu;
25 	__u8 enabled_cfi_clang;
26 	__u32 num_syms;
27 	__u16 name_len;
28 	__u16 bit_per_long;
29 	__u16 module_name_len;
30 	__u16 symbol_len;
31 	__u64 _relative_pa;
32 	__u64 _text_pa;
33 	__u64 _stext_pa;
34 	__u64 _etext_pa;
35 	__u64 _sinittext_pa;
36 	__u64 _einittext_pa;
37 	__u64 _end_pa;
38 	__u64 _offsets_pa;
39 	__u64 _names_pa;
40 	__u64 _token_table_pa;
41 	__u64 _token_index_pa;
42 	__u64 _markers_pa;
43 	__u64 _seqs_of_names_pa;
44 
45 	/* For frame pointer */
46 	__u32 thread_size;
47 
48 	/* For virt_to_phys */
49 	__u64 swapper_pg_dir_pa;
50 
51 	/* For linux banner */
52 	__u8 last_uts_release[__NEW_UTS_LEN];
53 
54 	/* Info of running build */
55 	__u8 build_info[BUILD_INFO_LEN];
56 
57 	/* For module kallsyms */
58 	__u32 enabled_modules_tree_lookup;
59 	__u32 mod_mem_offset;
60 	__u32 mod_kallsyms_offset;
61 } __packed;
62 
63 struct kernel_all_info {
64 	__u32 magic_number;
65 	__u32 combined_checksum;
66 	struct kernel_info info;
67 } __packed;
68 
69 #endif // DEBUG_KINFO_H
70