tzh
2024-08-22 c7d0944258c7d0943aa7b2211498fd612971ce27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
 
# The constants of verified boot.
 
# Recovery reason codes, copied from:
#     vboot_reference/firmware/include/vboot_nvstorage.h
#     vboot_reference/firmware/include/vboot_struct.h
RECOVERY_REASON = {
    # Recovery not requested
    'NOT_REQUESTED':      '0',   # 0x00
    # Recovery requested from legacy utility
    'LEGACY':             '1',   # 0x01
    # User manually requested recovery via recovery button
    'RO_MANUAL':          '2',   # 0x02
    # RW firmware failed signature check
    'RO_INVALID_RW':      '3',   # 0x03
    # S3 resume failed
    'RO_S3_RESUME':       '4',   # 0x04
    # TPM error in read-only firmware (deprecated)
    'DEP_RO_TPM_ERROR':   '5',   # 0x05
    # Shared data error in read-only firmware
    'RO_SHARED_DATA':     '6',   # 0x06
    # Test error from S3Resume()
    'RO_TEST_S3':         '7',   # 0x07
    # Test error from LoadFirmwareSetup()
    'RO_TEST_LFS':        '8',   # 0x08
    # Test error from LoadFirmware()
    'RO_TEST_LF':         '9',   # 0x09
    # RW firmware failed signature check
    'RW_NOT_DONE':        '16',  # 0x10
    'RW_DEV_MISMATCH':    '17',  # 0x11
    'RW_REC_MISMATCH':    '18',  # 0x12
    'RW_VERIFY_KEYBLOCK': '19',  # 0x13
    'RW_KEY_ROLLBACK':    '20',  # 0x14
    'RW_DATA_KEY_PARSE':  '21',  # 0x15
    'RW_VERIFY_PREAMBLE': '22',  # 0x16
    'RW_FW_ROLLBACK':     '23',  # 0x17
    'RW_HEADER_VALID':    '24',  # 0x18
    'RW_GET_FW_BODY':     '25',  # 0x19
    'RW_HASH_WRONG_SIZE': '26',  # 0x1A
    'RW_VERIFY_BODY':     '27',  # 0x1B
    'RW_VALID':           '28',  # 0x1C
    # Read-only normal path requested by firmware preamble, but
    # unsupported by firmware.
    'RW_NO_RO_NORMAL':    '29',  # 0x1D
    # Firmware boot failure outside of verified boot
    'RO_FIRMWARE':        '32',  # 0x20
    # Recovery mode TPM initialization requires a system reboot.
    # The system was already in recovery mode for some other reason
    # when this happened.
    'RO_TPM_REBOOT':      '33',  # 0x21
    # EC software sync - other error
    'EC_SOFTWARE_SYNC':   '34',  # 0x22
    # EC software sync - unable to determine active EC image
    'EC_UNKNOWN_IMAGE':   '35',  # 0x23
    # EC software sync - error obtaining EC image hash (deprecated)
    'DEP_EC_HASH':        '36',  # 0x24
    # EC software sync - error obtaining expected EC image
    'EC_EXPECTED_IMAGE':  '37',  # 0x25
    # EC software sync - error updating EC
    'EC_UPDATE':          '38',  # 0x26
    # EC software sync - unable to jump to EC-RW
    'EC_JUMP_RW':         '39',  # 0x27
    # EC software sync - unable to protect / unprotect EC-RW
    'EC_PROTECT':         '40',  # 0x28
    # Unspecified/unknown error in read-only firmware
    'RO_UNSPECIFIED':     '63',  # 0x3F
    # User manually requested recovery by pressing a key at developer
    # warning screen.
    'RW_DEV_SCREEN':      '65',  # 0x41
    # No OS kernel detected
    'RW_NO_OS':           '66',  # 0x42
    # OS kernel failed signature check
    'RW_INVALID_OS':      '67',  # 0x43
    # TPM error in rewritable firmware (deprecated)
    'DEP_RW_TPM_ERROR':   '68',  # 0x44
    # RW firmware in dev mode, but dev switch is off.
    'RW_DEV_MISMATCH':    '69',  # 0x45
    # Shared data error in rewritable firmware
    'RW_SHARED_DATA':     '70',  # 0x46
    # Test error from LoadKernel()
    'RW_TEST_LK':         '71',  # 0x47
    # No bootable disk found (deprecated)
    'DEP_RW_NO_DISK':     '72',  # 0x48
    # Rebooting did not correct TPM_E_FAIL or TPM_E_FAILEDSELFTEST
    'TPM_E_FAIL':         '73',  # 0x49
    # TPM setup error in read-only firmware
    'RO_TPM_S_ERROR':     '80',  # 0x50
    # TPM write error in read-only firmware
    'RO_TPM_W_ERROR':     '81',  # 0x51
    # TPM lock error in read-only firmware
    'RO_TPM_L_ERROR':     '82',  # 0x52
    # TPM update error in read-only firmware
    'RO_TPM_U_ERROR':     '83',  # 0x53
    # TPM read error in rewritable firmware
    'RW_TPM_R_ERROR':     '84',  # 0x54
    # TPM write error in rewritable firmware
    'RW_TPM_W_ERROR':     '85',  # 0x55
    # TPM lock error in rewritable firmware
    'RW_TPM_L_ERROR':     '86',  # 0x56
    # EC software sync unable to get EC image hash
    'EC_HASH_FAILED':     '87',  # 0x57
    # EC software sync invalid image hash size
    'EC_HASH_SIZE':       '88',  # 0x58
    # Unspecified error while trying to load kernel
    'LK_UNSPECIFIED':     '89',  # 0x59
    # No bootable storage device in system
    'RW_NO_DISK':         '90',  # 0x5A
    # No bootable kernel found on disk
    'RW_NO_KERNEL':       '91',  # 0x5B
    # Unspecified/unknown error in rewritable firmware
    'RW_UNSPECIFIED':     '127', # 0x7F
    # DM-verity error
    'KE_DM_VERITY':       '129', # 0x81
    # Unspecified/unknown error in kernel
    'KE_UNSPECIFIED':     '191', # 0xBF
    # Recovery mode test from user-mode
    'US_TEST':            '193', # 0xC1
    # Unspecified/unknown error in user-mode
    'US_UNSPECIFIED':     '255', # 0xFF
}
 
# GBB flags, copied from:
#     vboot_reference/firmware/include/gbb_header.h
GBB_FLAG_DEV_SCREEN_SHORT_DELAY    = 0x00000001
GBB_FLAG_LOAD_OPTION_ROMS          = 0x00000002
GBB_FLAG_ENABLE_ALTERNATE_OS       = 0x00000004
GBB_FLAG_FORCE_DEV_SWITCH_ON       = 0x00000008
GBB_FLAG_FORCE_DEV_BOOT_USB        = 0x00000010
GBB_FLAG_DISABLE_FW_ROLLBACK_CHECK = 0x00000020
GBB_FLAG_ENTER_TRIGGERS_TONORM     = 0x00000040
GBB_FLAG_FORCE_DEV_BOOT_LEGACY     = 0x00000080
GBB_FLAG_FAFT_KEY_OVERIDE          = 0x00000100
GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC  = 0x00000200
GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY   = 0x00000400
GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC  = 0x00000800
GBB_FLAG_DISABLE_LID_SHUTDOWN      = 0x00001000
GBB_FLAG_FORCE_DEV_BOOT_FASTBOOT_FULL_CAP = 0x00002000
 
 
# VbSharedData flags, copied from:
#     vboot_reference/firmware/include/vboot_struct.h
VDAT_FLAG_FWB_TRIED                = 0x00000001
VDAT_FLAG_KERNEL_KEY_VERIFIED      = 0x00000002
VDAT_FLAG_LF_DEV_SWITCH_ON         = 0x00000004
VDAT_FLAG_LF_USE_RO_NORMAL         = 0x00000008
VDAT_FLAG_BOOT_DEV_SWITCH_ON       = 0x00000010
VDAT_FLAG_BOOT_REC_SWITCH_ON       = 0x00000020
VDAT_FLAG_BOOT_FIRMWARE_WP_ENABLED = 0x00000040
VDAT_FLAG_BOOT_S3_RESUME           = 0x00000100
VDAT_FLAG_BOOT_RO_NORMAL_SUPPORT   = 0x00000200
VDAT_FLAG_HONOR_VIRT_DEV_SWITCH    = 0x00000400
VDAT_FLAG_EC_SOFTWARE_SYNC         = 0x00000800
VDAT_FLAG_EC_SLOW_UPDATE           = 0x00001000
 
# Firmware preamble flags, copied from:
#     vboot_reference/firmware/include/vboot_struct.h
PREAMBLE_USE_RO_NORMAL             = 0x00000001