From f5fd4c99d5b05fd9677cf81124d5ad5ef2270011 Mon Sep 17 00:00:00 2001 From: Ben Gardner Date: Fri, 20 Nov 2015 13:25:25 -0600 Subject: lib/timestamp.c: only log "Timestamp table full" once If the timestamp table gets corrupted (separate issue), the timestamp_sync_cache_to_cbmem() function may add a large number of bogus timestamp entries. This causes a flood of "ERROR: Timestamp table full". With logs going to a serial console, this renders the system essentially unbootable. There really isn't a need to log that more than once, so log it when the last slot in the timestamp table is filled. Change-Id: I05d131183afceca31f4dac91c5edc95cfb1e443f Signed-off-by: Ben Gardner Reviewed-on: http://review.coreboot.org/12506 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel Reviewed-by: Patrick Georgi --- src/lib/timestamp.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/lib') diff --git a/src/lib/timestamp.c b/src/lib/timestamp.c index e07fd4bead..03d9b8abdf 100644 --- a/src/lib/timestamp.c +++ b/src/lib/timestamp.c @@ -152,14 +152,15 @@ static void timestamp_add_table_entry(struct timestamp_table *ts_table, { struct timestamp_entry *tse; - if (ts_table->num_entries == ts_table->max_entries) { - printk(BIOS_ERR, "ERROR: Timestamp table full\n"); + if (ts_table->num_entries >= ts_table->max_entries) return; - } tse = &ts_table->entries[ts_table->num_entries++]; tse->entry_id = id; tse->entry_stamp = ts_time - ts_table->base_time; + + if (ts_table->num_entries == ts_table->max_entries) + printk(BIOS_ERR, "ERROR: Timestamp table full\n"); } void timestamp_add(enum timestamp_id id, uint64_t ts_time) -- cgit v1.2.3