summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Kitching <kitching@google.com>2019-07-29 18:35:08 +0800
committerCommit Bot <commit-bot@chromium.org>2019-08-06 06:06:59 +0000
commit1db2f3801a8843a1d6380a0969d6836b41ca474e (patch)
treecc35e2e26130d7b878366a1b8d04f059170f0e96
parent0e2e748940b7a48b8b056700dc0d081928c63c2e (diff)
downloadvboot-1db2f3801a8843a1d6380a0969d6836b41ca474e.tar.gz
vboot: join vboot1 and vboot2 errors into same enum
It's extremely hard to accomplish anything with two different sets of error codes. Since the two error code sets don't overlap, merge them into the same enum (vb2_return_code). The next step is to get rid of VbError_t and have all functions consistently return vboot2-style int. BUG=b:124141368, chromium:988410 TEST=make clean && make runtests BRANCH=none Change-Id: Ie34ac2c30e5d73fe886628e3150cf63543d520af Signed-off-by: Joel Kitching <kitching@google.com> Cq-Depend: chromium:1728117, chromium:1735666 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1722913 Tested-by: Joel Kitching <kitching@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r--firmware/2lib/include/2return_codes.h97
-rw-r--r--firmware/include/vboot_api.h104
-rw-r--r--firmware/stub/vboot_api_stub.c1
-rw-r--r--firmware/stub/vboot_api_stub_disk.c1
-rw-r--r--firmware/stub/vboot_api_stub_init.c1
-rw-r--r--firmware/stub/vboot_api_stub_stream.c1
-rw-r--r--tests/vboot_api_kernel6_tests.c1
7 files changed, 102 insertions, 104 deletions
diff --git a/firmware/2lib/include/2return_codes.h b/firmware/2lib/include/2return_codes.h
index 5126555b..39165533 100644
--- a/firmware/2lib/include/2return_codes.h
+++ b/firmware/2lib/include/2return_codes.h
@@ -16,6 +16,9 @@ enum vb2_return_code {
/* Success - no error */
VB2_SUCCESS = 0,
+ /* vboot1-style success (TODO: deprecate) */
+ VBERROR_SUCCESS = 0,
+
/*
* All vboot2 error codes start at a large offset from zero, to reduce
* the risk of overlap with other error codes (TPM, etc.).
@@ -29,6 +32,100 @@ enum vb2_return_code {
VB2_ERROR_MOCK,
/**********************************************************************
+ * vboot1-style errors
+ * TODO: deprecate these once they have all moved over to vboot2 style
+ */
+ /* Unknown error */
+ VBERROR_UNKNOWN = 0x10000,
+ /* Unable to initialize shared data */
+ VBERROR_INIT_SHARED_DATA = 0x10001,
+ /* Error resuming TPM during a S3 resume */
+ VBERROR_TPM_S3_RESUME = 0x10002,
+ /* VbSelectFirmware() failed to find a valid firmware */
+ VBERROR_LOAD_FIRMWARE = 0x10003,
+ /* Unable to write firmware versions to TPM */
+ VBERROR_TPM_WRITE_FIRMWARE = 0x10004,
+ /* Unable to lock firmware versions in TPM */
+ VBERROR_TPM_LOCK_FIRMWARE = 0x10005,
+ /* Unable to set boot mode state in TPM */
+ VBERROR_TPM_SET_BOOT_MODE_STATE = 0x10006,
+ /* Calling firmware needs to perform a reboot. */
+ VBERROR_REBOOT_REQUIRED = 0x10007,
+ /* Unable to set up TPM */
+ VBERROR_TPM_FIRMWARE_SETUP = 0x10008,
+ /* Unable to read kernel versions from TPM */
+ VBERROR_TPM_READ_KERNEL = 0x10009,
+ /* Attempt to load developer-only firmware with developer switch off */
+ VBERROR_DEV_FIRMWARE_SWITCH_MISMATCH = 0x1000A,
+ /* Unable to write kernel versions to TPM */
+ VBERROR_TPM_WRITE_KERNEL = 0x1000B,
+ /* Unable to lock kernel versions in TPM */
+ VBERROR_TPM_LOCK_KERNEL = 0x1000C,
+ /* Calling firmware requested shutdown via VbExIsShutdownRequested() */
+ VBERROR_SHUTDOWN_REQUESTED = 0x1000D,
+ /* Unable to find a boot device on which to look for a kernel */
+ VBERROR_NO_DISK_FOUND = 0x1000E,
+ /* No OS kernel found on any boot device */
+ VBERROR_NO_KERNEL_FOUND = 0x1000F,
+ /* All OS kernels found were invalid (corrupt, improperly signed...) */
+ VBERROR_INVALID_KERNEL_FOUND = 0x10010,
+ /* VbSelectAndLoadKernel() requested recovery mode */
+ VBERROR_LOAD_KERNEL_RECOVERY = 0x10011,
+ /* Other error inside VbSelectAndLoadKernel() */
+ VBERROR_LOAD_KERNEL = 0x10012,
+ /* Invalid Google binary block */
+ VBERROR_INVALID_GBB = 0x10013,
+ /* Invalid bitmap volume */
+ VBERROR_INVALID_BMPFV = 0x10014,
+ /* Invalid screen index */
+ VBERROR_INVALID_SCREEN_INDEX = 0x10015,
+ /* Simulated (test) error */
+ VBERROR_SIMULATED = 0x10016,
+ /* Invalid parameter */
+ VBERROR_INVALID_PARAMETER = 0x10017,
+ /* VbExBeep() can't make sounds at all */
+ VBERROR_NO_SOUND = 0x10018,
+ /* VbExBeep() can't make sound in the background */
+ VBERROR_NO_BACKGROUND_SOUND = 0x10019,
+ /* Need EC to reboot to read-only code to switch RW slot */
+ VBERROR_EC_REBOOT_TO_SWITCH_RW = 0x1001A,
+ /* Developer has requested a BIOS shell */
+ VBERROR_BIOS_SHELL_REQUESTED = 0x10020,
+ /* Need initialized display and don't have it, or vice-versa.
+ Deprecated; should use VBERROR_REBOOT_REQUIRED instead. */
+ VBERROR_DEPRECATED_DISPLAY_INIT_MISMATCH = 0x10021,
+ /* Need EC to reboot to read-only code */
+ VBERROR_EC_REBOOT_TO_RO_REQUIRED = 0x10022,
+ /* Invalid region read parameters */
+ VBERROR_REGION_READ_INVALID = 0x10023,
+ /* Cannot read from region */
+ VBERROR_REGION_READ_FAILED = 0x10024,
+ /* Unsupported region type */
+ VBERROR_UNSUPPORTED_REGION = 0x10025,
+ /* No image present (was returned from VbGbbReadImage(); deprecated */
+ VBERROR_NO_IMAGE_PRESENT = 0x10026,
+ /* failed to draw screen */
+ VBERROR_SCREEN_DRAW = 0x10027,
+ /* failed to jump to RW image */
+ VBERROR_RW_JUMP_FAILED = 0x10028,
+ /* Error reading FWMP from TPM (note: not present is not an error) */
+ VBERROR_TPM_READ_FWMP = 0x10029,
+ /* Peripheral busy. Cannot upgrade firmware at present. */
+ VBERROR_PERIPHERAL_BUSY = 0x10030,
+ /* Error reading or writing Alt OS flags to TPM */
+ VBERROR_DEPRECATED_TPM_ALT_OS = 0x10031,
+ /* Error writing VPD */
+ VBERROR_VPD_WRITE = 0x10032,
+
+ /* VbExEcGetExpectedRWHash() may return the following codes */
+ /* Compute expected RW hash from the EC image; BIOS doesn't have it */
+ VBERROR_EC_GET_EXPECTED_HASH_FROM_IMAGE = 0x20000,
+
+ /* Detachable UI internal functions may return the following codes */
+ /* No error; return to UI loop */
+ VBERROR_KEEP_LOOPING = 0x30000,
+
+ /**********************************************************************
* SHA errors
*/
VB2_ERROR_SHA = VB2_ERROR_BASE + 0x010000,
diff --git a/firmware/include/vboot_api.h b/firmware/include/vboot_api.h
index 518b8cd8..6f5aab2b 100644
--- a/firmware/include/vboot_api.h
+++ b/firmware/include/vboot_api.h
@@ -50,110 +50,6 @@ typedef uint32_t VbError_t;
#define test_mockable __attribute__((weak))
#endif
-/*
- * Predefined error numbers. Success is 0. Errors are non-zero, but differ
- * between functions. For example, the TPM functions may pass through TPM
- * error codes, some of which may be recoverable.
- */
-enum VbErrorPredefined_t {
- /* No error; function completed successfully. */
- VBERROR_SUCCESS = 0,
-
- /*
- * The verified boot entry points VbInit(), VbSelectFirmware(),
- * VbSelectAndLoadKernel() may return the following errors.
- */
- /* Unknown error */
- VBERROR_UNKNOWN = 0x10000,
- /* Unable to initialize shared data */
- VBERROR_INIT_SHARED_DATA = 0x10001,
- /* Error resuming TPM during a S3 resume */
- VBERROR_TPM_S3_RESUME = 0x10002,
- /* VbSelectFirmware() failed to find a valid firmware */
- VBERROR_LOAD_FIRMWARE = 0x10003,
- /* Unable to write firmware versions to TPM */
- VBERROR_TPM_WRITE_FIRMWARE = 0x10004,
- /* Unable to lock firmware versions in TPM */
- VBERROR_TPM_LOCK_FIRMWARE = 0x10005,
- /* Unable to set boot mode state in TPM */
- VBERROR_TPM_SET_BOOT_MODE_STATE = 0x10006,
- /* Calling firmware needs to perform a reboot. */
- VBERROR_REBOOT_REQUIRED = 0x10007,
- /* Unable to set up TPM */
- VBERROR_TPM_FIRMWARE_SETUP = 0x10008,
- /* Unable to read kernel versions from TPM */
- VBERROR_TPM_READ_KERNEL = 0x10009,
- /* Attempt to load developer-only firmware with developer switch off */
- VBERROR_DEV_FIRMWARE_SWITCH_MISMATCH = 0x1000A,
- /* Unable to write kernel versions to TPM */
- VBERROR_TPM_WRITE_KERNEL = 0x1000B,
- /* Unable to lock kernel versions in TPM */
- VBERROR_TPM_LOCK_KERNEL = 0x1000C,
- /* Calling firmware requested shutdown via VbExIsShutdownRequested() */
- VBERROR_SHUTDOWN_REQUESTED = 0x1000D,
- /* Unable to find a boot device on which to look for a kernel */
- VBERROR_NO_DISK_FOUND = 0x1000E,
- /* No OS kernel found on any boot device */
- VBERROR_NO_KERNEL_FOUND = 0x1000F,
- /* All OS kernels found were invalid (corrupt, improperly signed...) */
- VBERROR_INVALID_KERNEL_FOUND = 0x10010,
- /* VbSelectAndLoadKernel() requested recovery mode */
- VBERROR_LOAD_KERNEL_RECOVERY = 0x10011,
- /* Other error inside VbSelectAndLoadKernel() */
- VBERROR_LOAD_KERNEL = 0x10012,
- /* Invalid Google binary block */
- VBERROR_INVALID_GBB = 0x10013,
- /* Invalid bitmap volume */
- VBERROR_INVALID_BMPFV = 0x10014,
- /* Invalid screen index */
- VBERROR_INVALID_SCREEN_INDEX = 0x10015,
- /* Simulated (test) error */
- VBERROR_SIMULATED = 0x10016,
- /* Invalid parameter */
- VBERROR_INVALID_PARAMETER = 0x10017,
- /* VbExBeep() can't make sounds at all */
- VBERROR_NO_SOUND = 0x10018,
- /* VbExBeep() can't make sound in the background */
- VBERROR_NO_BACKGROUND_SOUND = 0x10019,
- /* Need EC to reboot to read-only code to switch RW slot */
- VBERROR_EC_REBOOT_TO_SWITCH_RW = 0x1001A,
- /* Developer has requested a BIOS shell */
- VBERROR_BIOS_SHELL_REQUESTED = 0x10020,
- /* Need initialized display and don't have it, or vice-versa.
- Deprecated; should use VBERROR_REBOOT_REQUIRED instead. */
- VBERROR_DEPRECATED_DISPLAY_INIT_MISMATCH = 0x10021,
- /* Need EC to reboot to read-only code */
- VBERROR_EC_REBOOT_TO_RO_REQUIRED = 0x10022,
- /* Invalid region read parameters */
- VBERROR_REGION_READ_INVALID = 0x10023,
- /* Cannot read from region */
- VBERROR_REGION_READ_FAILED = 0x10024,
- /* Unsupported region type */
- VBERROR_UNSUPPORTED_REGION = 0x10025,
- /* No image present (was returned from VbGbbReadImage(); deprecated */
- VBERROR_NO_IMAGE_PRESENT = 0x10026,
- /* failed to draw screen */
- VBERROR_SCREEN_DRAW = 0x10027,
- /* failed to jump to RW image */
- VBERROR_RW_JUMP_FAILED = 0x10028,
- /* Error reading FWMP from TPM (note: not present is not an error) */
- VBERROR_TPM_READ_FWMP = 0x10029,
- /* Peripheral busy. Cannot upgrade firmware at present. */
- VBERROR_PERIPHERAL_BUSY = 0x10030,
- /* Error reading or writing Alt OS flags to TPM */
- VBERROR_DEPRECATED_TPM_ALT_OS = 0x10031,
- /* Error writing VPD */
- VBERROR_VPD_WRITE = 0x10032,
-
- /* VbExEcGetExpectedRWHash() may return the following codes */
- /* Compute expected RW hash from the EC image; BIOS doesn't have it */
- VBERROR_EC_GET_EXPECTED_HASH_FROM_IMAGE = 0x20000,
-
- /* Detachable UI internal functions may return the following codes */
- /* No error; return to UI loop */
- VBERROR_KEEP_LOOPING = 0x30000,
-};
-
/*****************************************************************************/
/* Main entry points from firmware into vboot_reference */
diff --git a/firmware/stub/vboot_api_stub.c b/firmware/stub/vboot_api_stub.c
index 496d7204..23eb4d5b 100644
--- a/firmware/stub/vboot_api_stub.c
+++ b/firmware/stub/vboot_api_stub.c
@@ -13,6 +13,7 @@
#include <string.h>
#include <sys/time.h>
+#include "2common.h"
#include "vboot_api.h"
#include "vboot_test.h"
diff --git a/firmware/stub/vboot_api_stub_disk.c b/firmware/stub/vboot_api_stub_disk.c
index 975b42ad..9ff87cbb 100644
--- a/firmware/stub/vboot_api_stub_disk.c
+++ b/firmware/stub/vboot_api_stub_disk.c
@@ -12,6 +12,7 @@
#include <string.h>
#include <sys/time.h>
+#include "2common.h"
#include "vboot_api.h"
diff --git a/firmware/stub/vboot_api_stub_init.c b/firmware/stub/vboot_api_stub_init.c
index 0f7a3482..828591bd 100644
--- a/firmware/stub/vboot_api_stub_init.c
+++ b/firmware/stub/vboot_api_stub_init.c
@@ -13,6 +13,7 @@
#include <string.h>
#include <sys/time.h>
+#include "2common.h"
#include "vboot_api.h"
uint64_t VbExGetTimer(void)
diff --git a/firmware/stub/vboot_api_stub_stream.c b/firmware/stub/vboot_api_stub_stream.c
index c65259d3..e8e960b9 100644
--- a/firmware/stub/vboot_api_stub_stream.c
+++ b/firmware/stub/vboot_api_stub_stream.c
@@ -7,6 +7,7 @@
#include <stdint.h>
+#include "2common.h"
#include "vboot_api.h"
/* The stub implementation assumes 512-byte disk sectors */
diff --git a/tests/vboot_api_kernel6_tests.c b/tests/vboot_api_kernel6_tests.c
index 27065ac2..dde977b3 100644
--- a/tests/vboot_api_kernel6_tests.c
+++ b/tests/vboot_api_kernel6_tests.c
@@ -10,6 +10,7 @@
#include <stdlib.h>
#include <string.h>
+#include "2common.h"
#include "rollback_index.h"
#include "test_common.h"
#include "vboot_api.h"