diff options
author | Namyoon Woo <namyoon@chromium.org> | 2020-02-04 16:50:29 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-02-19 20:47:16 +0000 |
commit | 3ac621b0628074bf7d93856fcd33b42b205c7a27 (patch) | |
tree | 362dc24bf5f27f01d4c8df620f541974f5b2b44d | |
parent | 9440fcfea914b8efc8ab5160326fcbeec78465e8 (diff) | |
download | chrome-ec-3ac621b0628074bf7d93856fcd33b42b205c7a27.tar.gz |
optimize read_tpm_nvmem()
This patch optimizes read_tpm_nvmem() by replacing NvGetIndexData()
and NvGetIndexInfo() with NvReadIndexDta() and NvReadIndexInfo()
respectively.
This will reduce NvFindHandle() calls from three to one.
BUG=b:148489182
BRANCH=cr50, cr50-mp
TEST=The function execution time reduces from 1.2 msec to 550 usec.
Cq-Depend:chromium:2038108
Change-Id: I6659480d8b60578f3d0b9dc3f62a677ae8489a57
Signed-off-by: Namyoon Woo <namyoon@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2037920
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-by: Andrey Pronin <apronin@chromium.org>
-rw-r--r-- | board/cr50/tpm_nvmem_ops.c | 9 | ||||
-rw-r--r-- | fuzz/nvmem_tpm2_mock.c | 2 | ||||
-rw-r--r-- | test/nvmem_tpm2_mock.c | 2 |
3 files changed, 8 insertions, 5 deletions
diff --git a/board/cr50/tpm_nvmem_ops.c b/board/cr50/tpm_nvmem_ops.c index 90bddfb313..9c29834756 100644 --- a/board/cr50/tpm_nvmem_ops.c +++ b/board/cr50/tpm_nvmem_ops.c @@ -21,16 +21,18 @@ enum tpm_read_rv read_tpm_nvmem(uint16_t obj_index, { TPM_HANDLE object_handle; NV_INDEX nvIndex; + uint32_t handle_addr; object_handle = HR_NV_INDEX + obj_index; - if (!NvEarlyStageFindHandle(object_handle)) { + handle_addr = NvEarlyStageFindHandle(object_handle); + if (!handle_addr) { CPRINTF("%s: object at 0x%x not found\n", __func__, obj_index); return tpm_read_not_found; } /* Get properties of this index as stored in nvmem. */ - NvGetIndexInfo(object_handle, &nvIndex); + NvReadIndexInfo(object_handle, handle_addr, &nvIndex); /* * We presume it is readable and are not checking the access @@ -49,7 +51,8 @@ enum tpm_read_rv read_tpm_nvmem(uint16_t obj_index, } /* Perform the read. */ - NvGetIndexData(object_handle, &nvIndex, 0, obj_size, obj_value); + NvReadIndexData(object_handle, &nvIndex, handle_addr, 0, obj_size, + obj_value); return tpm_read_success; } diff --git a/fuzz/nvmem_tpm2_mock.c b/fuzz/nvmem_tpm2_mock.c index b864953b5d..931b7dc610 100644 --- a/fuzz/nvmem_tpm2_mock.c +++ b/fuzz/nvmem_tpm2_mock.c @@ -40,7 +40,7 @@ const uint16_t res_sizes[] = {4, 2, 2, 2, 66, 66, 66, 66, 66, 66, static uint16_t res_addrs[ARRAY_SIZE(res_sizes)]; -BOOL NvEarlyStageFindHandle(TPM_HANDLE handle) +UINT32 NvEarlyStageFindHandle(TPM_HANDLE handle) { size_t i; diff --git a/test/nvmem_tpm2_mock.c b/test/nvmem_tpm2_mock.c index a6d32bcb34..00c87df3b9 100644 --- a/test/nvmem_tpm2_mock.c +++ b/test/nvmem_tpm2_mock.c @@ -35,7 +35,7 @@ const uint16_t res_sizes[] = {4, 2, 2, 2, 66, 66, 66, 66, 66, 66, static uint16_t res_addrs[ARRAY_SIZE(res_sizes)]; -BOOL NvEarlyStageFindHandle(TPM_HANDLE handle) +UINT32 NvEarlyStageFindHandle(TPM_HANDLE handle) { size_t i; |