timestamps: Remove TIMESTAMP_CACHE_IN_BSS

This was implemented for LATE_CBMEM_INIT support which
has already been deprecated.

Change-Id: I39225ba675bc3389e051e15b400a905431969715
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/35375
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Kyösti Mälkki 2019-09-12 13:45:15 +03:00
parent b6b13c9f29
commit 8b93689a35
3 changed files with 17 additions and 40 deletions

View File

@ -31,7 +31,10 @@ void main(void)
console_init(); console_init();
/* Recover cbmem so infrastruture using it is functional. */ /*
* CBMEM needs to be recovered because timestamps rely on
* the cbmem infrastructure being around. Explicitly recover it.
*/
cbmem_initialize(); cbmem_initialize();
timestamp_add_now(TS_START_POSTCAR); timestamp_add_now(TS_START_POSTCAR);

View File

@ -28,8 +28,9 @@
*/ */
void timestamp_init(uint64_t base); void timestamp_init(uint64_t base);
/* /*
* Add a new timestamp. Depending on cbmem is available or not, this timestamp * Add a new timestamp. For ENV_ROMSTAGE_OR_BEFORE, this timestamp will be stored
* will be stored to cbmem / timestamp cache. * inside REGION(timestamp) before cbmem comes online. For later stages, timestamps
* added before cbmem_[recovery|initialize] calls will be lost.
*/ */
void timestamp_add(enum timestamp_id id, uint64_t ts_time); void timestamp_add(enum timestamp_id id, uint64_t ts_time);
/* Calls timestamp_add with current timestamp. */ /* Calls timestamp_add with current timestamp. */

View File

@ -27,34 +27,9 @@
#define MAX_TIMESTAMPS 192 #define MAX_TIMESTAMPS 192
/* When changing this number, adjust TIMESTAMP() size ASSERT() in memlayout.h */
#define MAX_BSS_TIMESTAMP_CACHE 16
struct __packed timestamp_cache {
struct timestamp_table table;
/* The struct timestamp_table has a 0 length array as its last field.
* The following 'entries' array serves as the storage space for the
* cache when allocated in the BSS. */
struct timestamp_entry entries[MAX_BSS_TIMESTAMP_CACHE];
};
DECLARE_OPTIONAL_REGION(timestamp); DECLARE_OPTIONAL_REGION(timestamp);
#if ENV_ROMSTAGE_OR_BEFORE /* This points to the active timestamp_table and can change within a stage
#define USE_TIMESTAMP_REGION (REGION_SIZE(timestamp) > 0)
#else
#define USE_TIMESTAMP_REGION 0
#endif
/* Currently we never store timestamp cache in .bss. */
#define TIMESTAMP_CACHE_IN_BSS 0
/*
* Storage of cache entries prior to cbmem coming online.
*/
static struct timestamp_cache timestamp_cache;
/* This points to the active timestamp_table and can change within a stage.
as CBMEM comes available. */ as CBMEM comes available. */
static struct timestamp_table *glob_ts_table CAR_GLOBAL; static struct timestamp_table *glob_ts_table CAR_GLOBAL;
@ -62,24 +37,22 @@ static void timestamp_cache_init(struct timestamp_table *ts_cache,
uint64_t base) uint64_t base)
{ {
ts_cache->num_entries = 0; ts_cache->num_entries = 0;
ts_cache->max_entries = MAX_BSS_TIMESTAMP_CACHE;
ts_cache->base_time = base; ts_cache->base_time = base;
ts_cache->max_entries = (REGION_SIZE(timestamp) -
if (USE_TIMESTAMP_REGION) offsetof(struct timestamp_table, entries))
ts_cache->max_entries = (REGION_SIZE(timestamp) - / sizeof(struct timestamp_entry);
offsetof(struct timestamp_table, entries))
/ sizeof(struct timestamp_entry);
} }
static struct timestamp_table *timestamp_cache_get(void) static struct timestamp_table *timestamp_cache_get(void)
{ {
struct timestamp_table *ts_cache = NULL; struct timestamp_table *ts_cache = NULL;
if (TIMESTAMP_CACHE_IN_BSS) { if (!ENV_ROMSTAGE_OR_BEFORE)
ts_cache = &timestamp_cache.table; return NULL;
} else if (USE_TIMESTAMP_REGION) {
if (REGION_SIZE(timestamp) < sizeof(*ts_cache)) if (REGION_SIZE(timestamp) < sizeof(*ts_cache)) {
BUG(); BUG();
} else {
ts_cache = (void *)_timestamp; ts_cache = (void *)_timestamp;
} }