diff options
author | nagendra modadugu <ngm@google.com> | 2017-05-11 10:54:53 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-05-15 20:51:37 -0700 |
commit | bbdb9fb321b025823bbb4362367b4057c1b96069 (patch) | |
tree | bb42e90047730dea5e80ce765b6adf3cd29575f0 | |
parent | ed1532bf81e3738eda104db226f46d5a457fec30 (diff) | |
download | chrome-ec-bbdb9fb321b025823bbb4362367b4057c1b96069.tar.gz |
CR50: configure AES rand stalls
This change configures the AES engine to
a) enable rand stalls at 25% during regular
operation through AES API's, and b) disable
rand stalls when doing fixed-key bulk-encryption
(e.g. NVRAM ciphering).
TCG tests continue to complete in ~20 minutes
(i.e. no noticable slowdown).
BRANCH=none
BUG=b:38315169
TEST=TCG tests pass
Change-Id: I2d26d232491a27bffbbe0b5aedfebaf04e0ad509
Signed-off-by: nagendra modadugu <ngm@google.com>
Reviewed-on: https://chromium-review.googlesource.com/502717
Commit-Ready: Nagendra Modadugu <ngm@google.com>
Tested-by: Nagendra Modadugu <ngm@google.com>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
-rw-r--r-- | chip/g/dcrypto/aes.c | 7 | ||||
-rw-r--r-- | chip/g/dcrypto/app_cipher.c | 6 |
2 files changed, 13 insertions, 0 deletions
diff --git a/chip/g/dcrypto/aes.c b/chip/g/dcrypto/aes.c index e42c43d58d..f5cc0e6d8f 100644 --- a/chip/g/dcrypto/aes.c +++ b/chip/g/dcrypto/aes.c @@ -16,6 +16,13 @@ static void set_control_register( GWRITE_FIELD(KEYMGR, AES_CTRL, ENC_MODE, encrypt); GWRITE_FIELD(KEYMGR, AES_CTRL, CTR_ENDIAN, CTRL_CTR_BIG_ENDIAN); GWRITE_FIELD(KEYMGR, AES_CTRL, ENABLE, CTRL_ENABLE); + + /* Turn off random nops (which are enabled by default). */ + GWRITE_FIELD(KEYMGR, AES_RAND_STALL_CTL, STALL_EN, 0); + /* Configure random nop percentage at 25%. */ + GWRITE_FIELD(KEYMGR, AES_RAND_STALL_CTL, FREQ, 1); + /* Now turn on random nops. */ + GWRITE_FIELD(KEYMGR, AES_RAND_STALL_CTL, STALL_EN, 1); } static int wait_read_data(volatile uint32_t *addr) diff --git a/chip/g/dcrypto/app_cipher.c b/chip/g/dcrypto/app_cipher.c index 32c507cd65..a416720633 100644 --- a/chip/g/dcrypto/app_cipher.c +++ b/chip/g/dcrypto/app_cipher.c @@ -94,6 +94,12 @@ static int aes_init(struct APPKEY_CTX *ctx, enum dcrypto_appid appid, GWRITE_FIELD(KEYMGR, AES_CTRL, ENC_MODE, ENCRYPT_MODE); GWRITE_FIELD(KEYMGR, AES_CTRL, CTR_ENDIAN, CTRL_CTR_BIG_ENDIAN); + /* + * For fixed-key, bulk ciphering, turn off random nops (which + * are enabled by default). + */ + GWRITE_FIELD(KEYMGR, AES_RAND_STALL_CTL, STALL_EN, 0); + /* Enable hidden key usage, each appid gets its own * USR, with USR0 starting at 0x2a0. */ |