| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * debug_kinfo.h - backup kernel information for bootloader usage |
| * |
| * Copyright 2021 Google LLC |
| */ |
| |
| #ifndef DEBUG_KINFO_H |
| #define DEBUG_KINFO_H |
| |
| #include <linux/utsname.h> |
| |
| #define BUILD_INFO_LEN 256 |
| #define DEBUG_KINFO_MAGIC 0xCCEEDDFF |
| |
| /* |
| * Header structure must be byte-packed, since the table is provided to |
| * bootloader. |
| */ |
| struct kernel_info { |
| /* For kallsyms */ |
| __u8 enabled_all; |
| __u8 enabled_base_relative; |
| __u8 enabled_absolute_percpu; |
| __u8 enabled_cfi_clang; |
| __u32 num_syms; |
| __u16 name_len; |
| __u16 bit_per_long; |
| __u16 module_name_len; |
| __u16 symbol_len; |
| __u64 _addresses_pa; |
| __u64 _relative_pa; |
| __u64 _stext_pa; |
| __u64 _etext_pa; |
| __u64 _sinittext_pa; |
| __u64 _einittext_pa; |
| __u64 _end_pa; |
| __u64 _offsets_pa; |
| __u64 _names_pa; |
| __u64 _token_table_pa; |
| __u64 _token_index_pa; |
| __u64 _markers_pa; |
| |
| /* For frame pointer */ |
| __u32 thread_size; |
| |
| /* For virt_to_phys */ |
| __u64 swapper_pg_dir_pa; |
| |
| /* For linux banner */ |
| __u8 last_uts_release[__NEW_UTS_LEN]; |
| |
| /* Info of running build */ |
| __u8 build_info[BUILD_INFO_LEN]; |
| |
| /* For module kallsyms */ |
| __u32 enabled_modules_tree_lookup; |
| __u32 mod_mem_offset; |
| __u32 mod_kallsyms_offset; |
| } __packed; |
| |
| struct kernel_all_info { |
| __u32 magic_number; |
| __u32 combined_checksum; |
| struct kernel_info info; |
| } __packed; |
| |
| #endif // DEBUG_KINFO_H |