summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2016-01-20 18:01:15 -0800
committerPatrick Georgi <pgeorgi@google.com>2016-01-27 16:27:18 +0100
commit4f7a3614cd07acdb6855c32eea38e5585834ee24 (patch)
treea833e29b193ef0d6467a9d0162226762f0601c90
parent95bfcaecf9c054bd116b7f36339f8de595026f28 (diff)
downloadcoreboot-4f7a3614cd07acdb6855c32eea38e5585834ee24.tar.xz
chromeos: Add timestamps to measure VPD read times
This patch adds three timestamps to coreboot and the cbmem utility that track the time required to read in the Chrome OS Vital Product Data (VPD) blocks (RO and RW). It's useful to account for these like all other large flash accesses, since their size is variable. BRANCH=None BUG=None TEST=Booted Oak, found my weird 100ms gap at the start of ramstage properly accounted for. Change-Id: I2024ed4f7d5e5ae81df9ab5293547cb5a10ff5e0 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: b97288b5ac67ada56e2ee7b181b28341d54b7234 Original-Change-Id: Ie69c1a4ddb6bd3f1094b3880201d53f1b5373aef Original-Signed-off-by: Julius Werner <jwerner@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/322831 Original-Reviewed-by: David Hendricks <dhendrix@chromium.org> Reviewed-on: https://review.coreboot.org/13139 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Martin Roth <martinroth@google.com>
-rw-r--r--src/commonlib/include/commonlib/timestamp_serialized.h3
-rw-r--r--src/vendorcode/google/chromeos/cros_vpd.c5
-rw-r--r--util/cbmem/cbmem.c4
3 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 f7c91c7448..6ce087924d 100644
--- a/src/commonlib/include/commonlib/timestamp_serialized.h
+++ b/src/commonlib/include/commonlib/timestamp_serialized.h
@@ -69,6 +69,9 @@ enum timestamp_id {
TS_DONE_LOADING = 508,
TS_DONE_HASHING = 509,
TS_END_HASH_BODY = 510,
+ TS_START_COPYVPD = 550,
+ TS_END_COPYVPD_RO = 551,
+ TS_END_COPYVPD_RW = 552,
/* 950+ reserved for vendorcode extensions (950-999: intel/fsp) */
TS_FSP_MEMORY_INIT_START = 950,
diff --git a/src/vendorcode/google/chromeos/cros_vpd.c b/src/vendorcode/google/chromeos/cros_vpd.c
index 8215454745..e826d36218 100644
--- a/src/vendorcode/google/chromeos/cros_vpd.c
+++ b/src/vendorcode/google/chromeos/cros_vpd.c
@@ -10,6 +10,7 @@
#include <fmap.h>
#include <stdlib.h>
#include <string.h>
+#include <timestamp.h>
#include "cros_vpd.h"
#include "lib_vpd.h"
@@ -83,6 +84,8 @@ static void cbmem_add_cros_vpd(int is_recovery)
int32_t ro_vpd_base = 0, rw_vpd_base = 0;
int32_t ro_vpd_size, rw_vpd_size;
+ timestamp_add_now(TS_START_COPYVPD);
+
ro_vpd_size = get_vpd_size("RO_VPD", &ro_vpd_base);
rw_vpd_size = get_vpd_size("RW_VPD", &rw_vpd_base);
@@ -123,6 +126,7 @@ static void cbmem_add_cros_vpd(int is_recovery)
__func__);
ro_vpd_size = 0;
}
+ timestamp_add_now(TS_END_COPYVPD_RO);
}
if (rw_vpd_size) {
@@ -143,6 +147,7 @@ static void cbmem_add_cros_vpd(int is_recovery)
"%s: Reading RW_VPD FMAP section failed.\n",
__func__);
}
+ timestamp_add_now(TS_END_COPYVPD_RW);
}
}
diff --git a/util/cbmem/cbmem.c b/util/cbmem/cbmem.c
index f63c9d4331..f58fcf77c7 100644
--- a/util/cbmem/cbmem.c
+++ b/util/cbmem/cbmem.c
@@ -520,6 +520,10 @@ static const struct timestamp_id_to_name {
{ TS_DONE_HASHING, "finished calculating body hash (SHA2)" },
{ TS_END_HASH_BODY, "finished verifying body signature (RSA)" },
+ { TS_START_COPYVPD, "starting to load Chrome OS VPD" },
+ { TS_END_COPYVPD_RO, "finished loading Chrome OS VPD (RO)" },
+ { TS_END_COPYVPD_RW, "finished loading Chrome OS VPD (RW)" },
+
{ TS_DC_START, "depthcharge start" },
{ TS_RO_PARAMS_INIT, "RO parameter init" },
{ TS_RO_VB_INIT, "RO vboot init" },