[coreboot-gerrit] New patch to review for coreboot: timestamp: Bump CBMEM timestamp count, make full use of pre-RAM regions

Julius Werner (jwerner@chromium.org) gerrit at coreboot.org
Wed Feb 10 01:39:34 CET 2016


Julius Werner (jwerner at chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/13651

-gerrit

commit e23e51d4e708e01a94b396229d0cb932a7dff6d3
Author: Julius Werner <jwerner at chromium.org>
Date:   Mon Feb 8 19:48:11 2016 -0800

    timestamp: Bump CBMEM timestamp count, make full use of pre-RAM regions
    
    Since we're reaching the timestamp limit on certain platforms (both for
    the pre-RAM cache and the final CBMEM region), this patch increases the
    amount of space for both. In the pre-RAM case, it achieves this by
    always utilizing the full size of the TIMESTAMP() region allocated in
    memlayout.ld, rather than arbitrarily limiting it to some constant.
    
    BRANCH=None
    BUG=None
    TEST=Booted Oak and confirmed that I can once again see all pre-RAM
    timestamps after picking in the LZ4 patch series.
    
    Change-Id: Iabb075a48d8d1e3e1811afeaad5ab47e7846c972
    Signed-off-by: Julius Werner <jwerner at chromium.org>
---
 src/lib/timestamp.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/lib/timestamp.c b/src/lib/timestamp.c
index 03d9b8a..2850fb7 100644
--- a/src/lib/timestamp.c
+++ b/src/lib/timestamp.c
@@ -25,17 +25,17 @@
 #include <rules.h>
 #include <smp/node.h>
 
-#define MAX_TIMESTAMPS 60
+#define MAX_TIMESTAMPS 84
 
-#define MAX_TIMESTAMP_CACHE 16
+#define MAX_BSS_TIMESTAMP_CACHE 16
 
 struct __attribute__((__packed__)) timestamp_cache {
 	uint32_t cache_state;
 	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. */
-	struct timestamp_entry entries[MAX_TIMESTAMP_CACHE];
+	 * cache when allocated in the BSS. */
+	struct timestamp_entry entries[MAX_BSS_TIMESTAMP_CACHE];
 };
 
 #if (IS_ENABLED(CONFIG_HAS_PRECBMEM_TIMESTAMP_REGION) && defined(__PRE_RAM__))
@@ -62,9 +62,14 @@ static void timestamp_cache_init(struct timestamp_cache *ts_cache,
 				 uint64_t base)
 {
 	ts_cache->table.num_entries = 0;
-	ts_cache->table.max_entries = MAX_TIMESTAMP_CACHE;
+	ts_cache->table.max_entries = MAX_BSS_TIMESTAMP_CACHE;
 	ts_cache->table.base_time = base;
 	ts_cache->cache_state = TIMESTAMP_CACHE_INITIALIZED;
+
+	if (USE_TIMESTAMP_REGION)
+		ts_cache->table.max_entries = (_timestamp_size -
+			offsetof(struct timestamp_cache, entries))
+			/ sizeof(struct timestamp_entry);
 }
 
 static struct timestamp_cache *timestamp_cache_get(void)



More information about the coreboot-gerrit mailing list