summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2017-08-02 17:30:54 -0700
committerchrome-bot <chrome-bot@chromium.org>2017-08-10 22:47:24 -0700
commitfe6a06fbf604fa587889ccc5bc3cc1597172ba3e (patch)
tree1ace2c0002da863e7ae39ed3fb542046acf8afe7 /include
parent76a64e7c826e0665d75327cf8d219f1a7a534dd4 (diff)
downloadchrome-ec-fe6a06fbf604fa587889ccc5bc3cc1597172ba3e.tar.gz
tpm: Add optional event logging
Allow TPM to log events in a circular buffer through tpm_log_event(). Logs can be retrieved through a new vendor command VENDOR_CC_POP_LOG_ENTRY. BUG=b:63760920 TEST=On eve, store TPM logs through 'logentry' cr50 console command, verify logs are fetched correctly through 'trunks_send --pop_logentry'. BRANCH=None Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: Idbc405728c0ba68078447fb59717d6115830e3d8 Reviewed-on: https://chromium-review.googlesource.com/599352 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Diffstat (limited to 'include')
-rw-r--r--include/config.h3
-rw-r--r--include/tpm_log.h19
-rw-r--r--include/tpm_vendor_cmds.h2
3 files changed, 24 insertions, 0 deletions
diff --git a/include/config.h b/include/config.h
index 57a1b3312a..bb17f6061e 100644
--- a/include/config.h
+++ b/include/config.h
@@ -759,6 +759,7 @@
#undef CONFIG_CMD_TASKREADY
#define CONFIG_CMD_TEMP_SENSOR
#define CONFIG_CMD_TIMERINFO
+#undef CONFIG_CMD_TPM_LOG
#define CONFIG_CMD_TYPEC
#undef CONFIG_CMD_USART_INFO
#define CONFIG_CMD_USBMUX
@@ -2303,6 +2304,8 @@
#undef CONFIG_TPM_SPS
/* Speak to the TPM 2.0 hardware protocol on the I2C slave interface */
#undef CONFIG_TPM_I2CS
+/* Record TPM events in circular buffer */
+#undef CONFIG_TPM_LOGGING
/*****************************************************************************/
/* USART stream config */
diff --git a/include/tpm_log.h b/include/tpm_log.h
new file mode 100644
index 0000000000..d934560290
--- /dev/null
+++ b/include/tpm_log.h
@@ -0,0 +1,19 @@
+/* Copyright 2017 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef __CROS_EC_TPM_LOG_H
+#define __CROS_EC_TPM_LOG_H
+
+#include "event_log.h"
+
+enum tpm_event {
+ TPM_EVENT_INIT,
+ /* TODO: Add log events */
+};
+
+/* Log TPM event of given type with data payload. */
+void tpm_log_event(enum tpm_event type, uint16_t data);
+
+#endif /* __CROS_EC_TPM_LOG_H */
diff --git a/include/tpm_vendor_cmds.h b/include/tpm_vendor_cmds.h
index ce1b3be057..f76685373c 100644
--- a/include/tpm_vendor_cmds.h
+++ b/include/tpm_vendor_cmds.h
@@ -41,6 +41,7 @@ enum vendor_cmd_cc {
VENDOR_CC_GET_BOARD_ID = 25,
VENDOR_CC_SET_BOARD_ID = 26,
VENDOR_CC_U2F_APDU = 27,
+ VENDOR_CC_POP_LOG_ENTRY = 28,
LAST_VENDOR_COMMAND = 65535,
};
@@ -61,6 +62,7 @@ enum vendor_cmd_rc {
VENDOR_RC_WRITE_FLASH_FAIL = 3,
VENDOR_RC_REQUEST_TOO_BIG = 4,
VENDOR_RC_RESPONSE_TOO_BIG = 5,
+ VENDOR_RC_INTERNAL_ERROR = 6,
/* Only 7 bits available; max is 127 */
VENDOR_RC_NO_SUCH_COMMAND = 127,
};