summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@google.com>2015-06-04 09:07:49 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-06-04 20:50:58 +0000
commit3479e84e3041336f1e967c302c5a35cb64819927 (patch)
tree0fb1c4ad8766579de88b8335680a84ecc6bf8a97
parent22da78ce594d1e9893fe418e4a021db17002f777 (diff)
downloadvboot-stabilize-7155.B.tar.gz
recovery: Add recovery reasons for BCBstabilize-7155.B
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 <furquan@google.com> Reviewed-on: https://chromium-review.googlesource.com/275222 Trybot-Ready: Furquan Shaikh <furquan@chromium.org> Tested-by: Furquan Shaikh <furquan@chromium.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Furquan Shaikh <furquan@chromium.org>
-rw-r--r--firmware/2lib/include/2recovery_reasons.h6
-rw-r--r--firmware/include/vboot_nvstorage.h4
-rw-r--r--firmware/lib/vboot_display.c4
3 files changed, 14 insertions, 0 deletions
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";
}