summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornagendra modadugu <ngm@google.com>2017-05-11 10:54:53 -0700
committerchrome-bot <chrome-bot@chromium.org>2017-05-15 20:51:37 -0700
commitbbdb9fb321b025823bbb4362367b4057c1b96069 (patch)
treebb42e90047730dea5e80ce765b6adf3cd29575f0
parented1532bf81e3738eda104db226f46d5a457fec30 (diff)
downloadchrome-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.c7
-rw-r--r--chip/g/dcrypto/app_cipher.c6
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.
*/