# 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