blob: 3c7c4a21d5d5948f7f03b79249e1089feab8e024 [file] [log] [blame] [edit]
// 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_kallsyms_offset;
__u64 module_start_va;
__u64 module_end_va;
} __packed;
struct kernel_all_info {
__u32 magic_number;
__u32 combined_checksum;
struct kernel_info info;
} __packed;
#endif // DEBUG_KINFO_H