summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaul E Rangel <rrangel@chromium.org>2021-11-03 16:53:40 -0600
committerPaul Fagerburg <pfagerburg@chromium.org>2021-11-08 14:46:40 +0000
commitdc45951e88d4833241f475ad85663a077906ef00 (patch)
treee2993be6a720c9bc19782c12a62ab6eb2ac333ce
parent61c9cd9890598e64519ee32f6aca20a36f97d2a6 (diff)
downloadcoreboot-dc45951e88d4833241f475ad85663a077906ef00.tar.gz
coreboot-dc45951e88d4833241f475ad85663a077906ef00.tar.bz2
coreboot-dc45951e88d4833241f475ad85663a077906ef00.zip
drivers/elog/elog: Add timestamps to elog_init
elog init requires doing a lot of SPI transactions. This change makes it clear how long we spend initializing elog. BUG=b:179699789 TEST=Boot guybrush and see elog init timestamps 114:started elog init 3,029,116 (88) 115:finished elog init 3,071,281 (42,165) Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: Ia92372dd76535e06eb3b8a08b53e80ddb38b7a8f Reviewed-on: https://review.coreboot.org/c/coreboot/+/58957 Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/commonlib/include/commonlib/timestamp_serialized.h4
-rw-r--r--src/drivers/elog/elog.c8
2 files changed, 12 insertions, 0 deletions
diff --git a/src/commonlib/include/commonlib/timestamp_serialized.h b/src/commonlib/include/commonlib/timestamp_serialized.h
index 98fe552b472f..de3e1bb624a2 100644
--- a/src/commonlib/include/commonlib/timestamp_serialized.h
+++ b/src/commonlib/include/commonlib/timestamp_serialized.h
@@ -56,6 +56,8 @@ enum timestamp_id {
TS_DELAY_END = 111,
TS_READ_UCODE_START = 112,
TS_READ_UCODE_END = 113,
+ TS_ELOG_INIT_START = 114,
+ TS_ELOG_INIT_END = 115,
/* 500+ reserved for vendorcode extensions (500-600: google/chromeos) */
TS_START_COPYVER = 501,
@@ -200,6 +202,8 @@ static const struct timestamp_id_to_name {
{ TS_DELAY_END, "Forced delay end" },
{ TS_READ_UCODE_START, "started reading uCode" },
{ TS_READ_UCODE_END, "finished reading uCode" },
+ { TS_ELOG_INIT_START, "started elog init" },
+ { TS_ELOG_INIT_END, "finished elog init" },
{ TS_START_COPYVER, "starting to load verstage" },
{ TS_END_COPYVER, "finished loading verstage" },
diff --git a/src/drivers/elog/elog.c b/src/drivers/elog/elog.c
index ca2ec6ecd6a5..37df182a8dc0 100644
--- a/src/drivers/elog/elog.c
+++ b/src/drivers/elog/elog.c
@@ -16,6 +16,7 @@
#include <smbios.h>
#include <stdint.h>
#include <string.h>
+#include <timestamp.h>
#define ELOG_MIN_AVAILABLE_ENTRIES 2 /* Shrink when this many can't fit */
#define ELOG_SHRINK_PERCENTAGE 25 /* Percent of total area to remove */
@@ -749,6 +750,9 @@ int elog_init(void)
}
elog_state.elog_initialized = ELOG_BROKEN;
+ if (!ENV_SMM)
+ timestamp_add_now(TS_ELOG_INIT_START);
+
elog_debug("%s()\n", __func__);
/* Set up the backing store */
@@ -781,6 +785,10 @@ int elog_init(void)
if (ENV_PAYLOAD_LOADER)
elog_add_boot_count();
+
+ if (!ENV_SMM)
+ timestamp_add_now(TS_ELOG_INIT_END);
+
return 0;
}