From 3479e84e3041336f1e967c302c5a35cb64819927 Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Thu, 4 Jun 2015 09:07:49 -0700 Subject: recovery: Add recovery reasons for BCB BCB is bootloader control block. Add reasons specific to BCB: 1. In case of any error reading/writing BCB (internal FW error) 2. User-mode requested recovery via BCB (user-mode requested) BUG=chrome-os-partner:40960 BRANCH=None TEST=Compiles successfully Change-Id: I0ac362ba7267a08313cb3077be686aa73367e53b Signed-off-by: Furquan Shaikh Reviewed-on: https://chromium-review.googlesource.com/275222 Trybot-Ready: Furquan Shaikh Tested-by: Furquan Shaikh Reviewed-by: Aaron Durbin Reviewed-by: Randall Spangler Commit-Queue: Furquan Shaikh --- firmware/2lib/include/2recovery_reasons.h | 6 ++++++ firmware/include/vboot_nvstorage.h | 4 ++++ firmware/lib/vboot_display.c | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/firmware/2lib/include/2recovery_reasons.h b/firmware/2lib/include/2recovery_reasons.h index 1c765313..1ced50e1 100644 --- a/firmware/2lib/include/2recovery_reasons.h +++ b/firmware/2lib/include/2recovery_reasons.h @@ -190,6 +190,9 @@ enum vb2_nv_recovery { /* No bootable kernel found on disk */ VB2_RECOVERY_RW_NO_KERNEL = 0x5b, + /* BCB related error in RW firmware */ + VB2_RECOVERY_RW_BCB_ERROR = 0x5c, + /* Unspecified/unknown error in rewritable firmware */ VB2_RECOVERY_RW_UNSPECIFIED = 0x7f, @@ -202,6 +205,9 @@ enum vb2_nv_recovery { /* Recovery mode test from user-mode */ VB2_RECOVERY_US_TEST = 0xc1, + /* Recovery requested by user-mode via BCB */ + VB2_RECOVERY_BCB_USER_MODE = 0xc2, + /* Unspecified/unknown error in user-mode */ VB2_RECOVERY_US_UNSPECIFIED = 0xff, }; diff --git a/firmware/include/vboot_nvstorage.h b/firmware/include/vboot_nvstorage.h index a443dd3e..665a5e5d 100644 --- a/firmware/include/vboot_nvstorage.h +++ b/firmware/include/vboot_nvstorage.h @@ -250,6 +250,8 @@ typedef enum VbFwResult { #define VBNV_RECOVERY_RW_NO_DISK 0x5A /* No bootable kernel found on disk */ #define VBNV_RECOVERY_RW_NO_KERNEL 0x5B +/* BCB-related error in RW firmware */ +#define VBNV_RECOVERY_RW_BCB_ERROR 0x5C /* Unspecified/unknown error in rewritable firmware */ #define VBNV_RECOVERY_RW_UNSPECIFIED 0x7F /* DM-verity error */ @@ -258,6 +260,8 @@ typedef enum VbFwResult { #define VBNV_RECOVERY_KE_UNSPECIFIED 0xBF /* Recovery mode test from user-mode */ #define VBNV_RECOVERY_US_TEST 0xC1 +/* Recovery requested by user-mode via BCB */ +#define VBNV_RECOVERY_BCB_USER_MODE 0xC2 /* Unspecified/unknown error in user-mode */ #define VBNV_RECOVERY_US_UNSPECIFIED 0xFF diff --git a/firmware/lib/vboot_display.c b/firmware/lib/vboot_display.c index 311a1c9a..838ffc4f 100644 --- a/firmware/lib/vboot_display.c +++ b/firmware/lib/vboot_display.c @@ -484,6 +484,8 @@ const char *RecoveryReasonString(uint8_t code) return "No bootable storage device in system"; case VBNV_RECOVERY_RW_NO_KERNEL: return "No bootable kernel found on disk"; + case VBNV_RECOVERY_RW_BCB_ERROR: + return "BCB partition error on disk"; case VBNV_RECOVERY_RW_UNSPECIFIED: return "Unspecified/unknown error in RW firmware"; case VBNV_RECOVERY_KE_DM_VERITY: @@ -492,6 +494,8 @@ const char *RecoveryReasonString(uint8_t code) return "Unspecified/unknown error in kernel"; case VBNV_RECOVERY_US_TEST: return "Recovery mode test from user-mode"; + case VBNV_RECOVERY_BCB_USER_MODE: + return "User-mode requested recovery via BCB"; case VBNV_RECOVERY_US_UNSPECIFIED: return "Unspecified/unknown error in user-mode"; } -- cgit v1.2.1