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 <gardner.ben@gmail.com>
Reviewed-on: http://review.coreboot.org/12506
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Ben Gardner 2015-11-20 13:25:25 -06:00 committed by Martin Roth
parent 1ef80141c0
commit f5fd4c99d5
1 changed files with 4 additions and 3 deletions

View File

@ -152,14 +152,15 @@ static void timestamp_add_table_entry(struct timestamp_table *ts_table,
{ {
struct timestamp_entry *tse; struct timestamp_entry *tse;
if (ts_table->num_entries == ts_table->max_entries) { if (ts_table->num_entries >= ts_table->max_entries)
printk(BIOS_ERR, "ERROR: Timestamp table full\n");
return; return;
}
tse = &ts_table->entries[ts_table->num_entries++]; tse = &ts_table->entries[ts_table->num_entries++];
tse->entry_id = id; tse->entry_id = id;
tse->entry_stamp = ts_time - ts_table->base_time; 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) void timestamp_add(enum timestamp_id id, uint64_t ts_time)