timestamp: add generic cache region
In order to accommodate tracking timestamps in all the __PRE_RAM__ stages (bootblock, verstage, romstage, etc) of a platform one needs to provide a way to specify a persistent region of SRAM or cache-as-ram to store the timestamps until cbmem comes online. Provide that infrastructure. Based on original patches from chromium.org: Original-Change-Id: I4d78653c0595523eeeb02115423e7fecceea5e1e Original-Signed-off-by: Furquan Shaikh <furquan@google.com> Original-Reviewed-on: https://chromium-review.googlesource.com/223348 Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org> Original-Reviewed-by: Patrick Georgi <pgeorgi@chromium.org> Original-Tested-by: Furquan Shaikh <furquan@chromium.org> Original-Commit-Queue: Furquan Shaikh <furquan@chromium.org> Original-Change-Id: Ie5ffda3112d626068bd1904afcc5a09bc4916d16 Original-Signed-off-by: Furquan Shaikh <furquan@google.com> Original-Reviewed-on: https://chromium-review.googlesource.com/224024 Original-Reviewed-by: Furquan Shaikh <furquan@chromium.org> Original-Commit-Queue: Furquan Shaikh <furquan@chromium.org> Original-Tested-by: Furquan Shaikh <furquan@chromium.org> Change-Id: I8779526136e89ae61a6f177ce5c74a6530469ae1 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/10790 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: build bot (Jenkins)
This commit is contained in:
committed by
Patrick Georgi
parent
d17a8623a5
commit
1936f6cf25
@@ -47,6 +47,9 @@
|
||||
|
||||
#define DRAM_START(addr) SYMBOL(dram, addr)
|
||||
|
||||
#define TIMESTAMP(addr, size) \
|
||||
REGION(timestamp, addr, size, 8)
|
||||
|
||||
#define PRERAM_CBMEM_CONSOLE(addr, size) \
|
||||
REGION(preram_cbmem_console, addr, size, 4)
|
||||
|
||||
|
@@ -28,6 +28,10 @@ extern u8 _esram[];
|
||||
|
||||
extern u8 _dram[];
|
||||
|
||||
extern u8 _timestamp[];
|
||||
extern u8 _etimestamp[];
|
||||
#define _timestamp_size (_etimestamp - _timestamp)
|
||||
|
||||
extern u8 _preram_cbmem_console[];
|
||||
extern u8 _epreram_cbmem_console[];
|
||||
#define _preram_cbmem_console_size \
|
||||
|
@@ -89,8 +89,21 @@ enum timestamp_id {
|
||||
};
|
||||
|
||||
#if CONFIG_COLLECT_TIMESTAMPS && (CONFIG_EARLY_CBMEM_INIT || !defined(__PRE_RAM__))
|
||||
/*
|
||||
* timestamp_init() needs to be called once for each of these cases:
|
||||
* 1. __PRE_RAM__ (bootblock, romstage, verstage, etc) and
|
||||
* 2. !__PRE_RAM__ (ramstage)
|
||||
* The latter is taken care of by the generic coreboot infrastructure so
|
||||
* it's up to the chipset/arch to call timestamp_init() in *one* of
|
||||
* the __PRE_RAM__ stages. If multiple calls are made timestamps will be lost.
|
||||
*/
|
||||
void timestamp_init(uint64_t base);
|
||||
/*
|
||||
* Add a new timestamp. Depending on cbmem is available or not, this timestamp
|
||||
* will be stored to cbmem / timestamp cache.
|
||||
*/
|
||||
void timestamp_add(enum timestamp_id id, uint64_t ts_time);
|
||||
/* Calls timestamp_add with current timestamp. */
|
||||
void timestamp_add_now(enum timestamp_id id);
|
||||
#else
|
||||
#define timestamp_init(base)
|
||||
|
Reference in New Issue
Block a user