debug_kinfo.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. #ifndef DEBUG_KINFO_H
  8. #define DEBUG_KINFO_H
  9. #include <linux/utsname.h>
  10. #define BUILD_INFO_LEN 256
  11. #define DEBUG_KINFO_MAGIC 0xCCEEDDFF
  12. /*
  13. * Header structure must be byte-packed, since the table is provided to
  14. * bootloader.
  15. */
  16. struct kernel_info {
  17. /* For kallsyms */
  18. __u8 enabled_all;
  19. __u8 enabled_base_relative;
  20. __u8 enabled_absolute_percpu;
  21. __u8 enabled_cfi_clang;
  22. __u32 num_syms;
  23. __u16 name_len;
  24. __u16 bit_per_long;
  25. __u16 module_name_len;
  26. __u16 symbol_len;
  27. __u64 _addresses_pa;
  28. __u64 _relative_pa;
  29. __u64 _stext_pa;
  30. __u64 _etext_pa;
  31. __u64 _sinittext_pa;
  32. __u64 _einittext_pa;
  33. __u64 _end_pa;
  34. __u64 _offsets_pa;
  35. __u64 _names_pa;
  36. __u64 _token_table_pa;
  37. __u64 _token_index_pa;
  38. __u64 _markers_pa;
  39. /* For frame pointer */
  40. __u32 thread_size;
  41. /* For virt_to_phys */
  42. __u64 swapper_pg_dir_pa;
  43. /* For linux banner */
  44. __u8 last_uts_release[__NEW_UTS_LEN];
  45. /* Info of running build */
  46. __u8 build_info[BUILD_INFO_LEN];
  47. /* For module kallsyms */
  48. __u32 enabled_modules_tree_lookup;
  49. __u32 mod_core_layout_offset;
  50. __u32 mod_init_layout_offset;
  51. __u32 mod_kallsyms_offset;
  52. __u64 module_start_va;
  53. __u64 module_end_va;
  54. } __packed;
  55. struct kernel_all_info {
  56. __u32 magic_number;
  57. __u32 combined_checksum;
  58. struct kernel_info info;
  59. } __packed;
  60. #endif // DEBUG_KINFO_H