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 <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>
diff --git a/firmware/2lib/include/2recovery_reasons.h b/firmware/2lib/include/2recovery_reasons.h
index 1c76531..1ced50e 100644
--- a/firmware/2lib/include/2recovery_reasons.h
+++ b/firmware/2lib/include/2recovery_reasons.h
@@ -190,6 +190,9 @@
/* 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 @@
/* 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 a443dd3..665a5e5 100644
--- a/firmware/include/vboot_nvstorage.h
+++ b/firmware/include/vboot_nvstorage.h
@@ -250,6 +250,8 @@
#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 @@
#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 311a1c9..838ffc4 100644
--- a/firmware/lib/vboot_display.c
+++ b/firmware/lib/vboot_display.c
@@ -484,6 +484,8 @@
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 @@
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";
}