summaryrefslogtreecommitdiffstats
path: root/util/cbmem/cbmem.c
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2015-07-11 12:44:10 -0500
committerAaron Durbin <adurbin@chromium.org>2015-07-14 22:50:17 +0200
commit31540fb7855a17ac82406f8a42d9a3b8115c12bd (patch)
treea1626a8daaaf3cad7b204ac2e90c86f30296bf0a /util/cbmem/cbmem.c
parentf61b35d5b0b25ca766f6d207c4b354407862b973 (diff)
downloadcoreboot-31540fb7855a17ac82406f8a42d9a3b8115c12bd.tar.gz
coreboot-31540fb7855a17ac82406f8a42d9a3b8115c12bd.tar.bz2
coreboot-31540fb7855a17ac82406f8a42d9a3b8115c12bd.zip
cbmem: export base_time in timestamp table
It's helpful to know the base_time (1st timestamp) in the timestamp table because it provides more information like the accumulated time before the first timestamp was recorded. In order to maximize this information report the base time as an entry that is printed. It's called '1st timestamp'. The implementation turns all the timestamp entries into absolute times so one can observe both absolute and relative time for each marker. Change-Id: I1334a2d980e3bcc2968a3bd6493c68b9efcca7ae Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/10883 Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'util/cbmem/cbmem.c')
-rw-r--r--util/cbmem/cbmem.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/util/cbmem/cbmem.c b/util/cbmem/cbmem.c
index aa73c6a67a4d..a11935ecdc76 100644
--- a/util/cbmem/cbmem.c
+++ b/util/cbmem/cbmem.c
@@ -413,6 +413,8 @@ static const struct timestamp_id_to_name {
u32 id;
const char *name;
} timestamp_ids[] = {
+ /* Marker to report base_time. */
+ { 0, "1st timestamp" },
{ TS_START_ROMSTAGE, "start of rom stage" },
{ TS_BEFORE_INITRAM, "before ram initialization" },
{ TS_AFTER_INITRAM, "after ram initialization" },
@@ -504,6 +506,7 @@ static void dump_timestamps(void)
int i;
struct timestamp_table *tst_p;
size_t size;
+ uint64_t prev_stamp;
if (timestamps.tag != LB_TAG_TIMESTAMPS) {
fprintf(stderr, "No timestamps found in coreboot table.\n");
@@ -519,10 +522,19 @@ static void dump_timestamps(void)
unmap_memory();
tst_p = map_memory_size((unsigned long)timestamps.cbmem_addr, size);
+ /* Report the base time within the table. */
+ prev_stamp = 0;
+ timestamp_print_entry(0, tst_p->base_time, prev_stamp);
+ prev_stamp = tst_p->base_time;
+
for (i = 0; i < tst_p->num_entries; i++) {
- const struct timestamp_entry *tse_p = tst_p->entries + i;
- timestamp_print_entry(tse_p->entry_id, tse_p->entry_stamp,
- i ? tse_p[-1].entry_stamp : 0);
+ uint64_t stamp;
+ const struct timestamp_entry *tse = &tst_p->entries[i];
+
+ /* Make all timestamps absolute. */
+ stamp = tse->entry_stamp + tst_p->base_time;
+ timestamp_print_entry(tse->entry_id, stamp, prev_stamp);
+ prev_stamp = stamp;
}
unmap_memory();