diff options
author | Bill Richardson <wfrichar@chromium.org> | 2012-05-17 13:26:05 -0700 |
---|---|---|
committer | Gerrit <chrome-bot@google.com> | 2012-05-18 18:15:58 -0700 |
commit | b75d8adcc01f08cf5a6d87b78aeb1d7cdfcd22af (patch) | |
tree | 9106f87dab43facc5a707df7ea4e604a30444641 /firmware/lib/include | |
parent | e97760cec3a4e08f6b3b3266bfcb02137197a7a7 (diff) | |
download | vboot-b75d8adcc01f08cf5a6d87b78aeb1d7cdfcd22af.tar.gz |
Use virtual dev-mode switch when told to.factory-2338.B
If VbInit() is instructed to look at a virtual dev-mode switch, then it will
use value contained in the TPM's firmware space instead of a hardware GPIO
to determine if developer mode is enabled.
This change just makes it look. It doesn't provide a way to actually set
the value in the TPM. VbInit() isn't being told to look yet, either. Those
changes are coming.
BUG=chrome-os-partner:9706
TEST=none
The usual sanity-check applies:
make
make runtests
But to actually test that this stuff is working IRL requires special tweaks
to other components and monitoring the serial debug output from both EC and
CPU. We'll save the hands-on tests for when it's all done.
Change-Id: Ie485ad2180224e192238bf2a5dbf95bbcb9130f9
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/23067
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'firmware/lib/include')
-rw-r--r-- | firmware/lib/include/rollback_index.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/firmware/lib/include/rollback_index.h b/firmware/lib/include/rollback_index.h index 4d847626..5a072446 100644 --- a/firmware/lib/include/rollback_index.h +++ b/firmware/lib/include/rollback_index.h @@ -37,10 +37,13 @@ typedef struct RollbackSpaceKernel { /* Last boot was developer mode. TPM ownership is cleared when * transitioning to/from developer mode. */ #define FLAG_LAST_BOOT_DEVELOPER 0x01 -/* There have been one or more boots which left PP unlocked, so the - * contents of the kernel space are untrusted and must be restored - * from the backup copy. */ -#define FLAG_KERNEL_SPACE_USE_BACKUP 0x02 +/* Some systems may not have a dedicated dev-mode switch, but enter and leave + * dev-mode through some recovery-mode magic keypresses. For those systems, + * the dev-mode "switch" state is in this bit (0=normal, 1=dev). To make it + * work, a new flag is passed to VbInit(), indicating that the system lacks a + * physical dev-mode switch. If a physical switch is present, this bit is + * ignored. */ +#define FLAG_VIRTUAL_DEV_MODE_ON 0x02 #define ROLLBACK_SPACE_FIRMWARE_VERSION 2 /* Firmware space - FIRMWARE_NV_INDEX, locked with global lock. */ @@ -64,11 +67,11 @@ uint32_t RollbackS3Resume(void); /* These functions are callable from VbSelectFirmware(). They cannot use * global variables. */ -/* Setup must be called. Pass recovery_mode=nonzero if in recovery - * mode. Pass developer_mode=nonzero if in developer - * mode. */ -uint32_t RollbackFirmwareSetup(int recovery_mode, int developer_mode, - uint32_t* version); +/* Setup must be called. Pass recovery_mode=nonzero if in recovery mode. Pass + * *developer_mode=nonzero if in developer mode. Set hw_dev_sw if there's a + * hardware developer switch. Duh. */ +uint32_t RollbackFirmwareSetup(int recovery_mode, int hw_dev_sw, + int* dev_mode_ptr, uint32_t* version); /* Write may be called if the versions change */ uint32_t RollbackFirmwareWrite(uint32_t version); |