[coreboot-gerrit] New patch to review for coreboot: memlayout: Ensure TIMESTAMP() region is big enough to avoid BUG()

Julius Werner (jwerner@chromium.org) gerrit at coreboot.org
Sat Aug 20 03:17:20 CEST 2016


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

-gerrit

commit 243de9f00d4d7db3d96899f1e137f2f0bfd58acb
Author: Julius Werner <jwerner at chromium.org>
Date:   Fri Aug 19 15:17:42 2016 -0700

    memlayout: Ensure TIMESTAMP() region is big enough to avoid BUG()
    
    The timestamp code asserts that the _timestamp region (allocated in
    memlayout for pre-RAM stages) is large enough for the assumptions it
    makes. This is good, except that we often initialize timestamps
    extremely early in the bootblock, even before console output. Debugging
    a BUG() that hits before console_init() is no fun.
    
    This patch adds a link-time assertion for the size of the _timestamp
    region in memlayout to prevent people from accidentally running into
    this issue.
    
    Change-Id: Ibe4301fb89c47fde28e883fd11647d6b62a66fb0
    Signed-off-by: Julius Werner <jwerner at chromium.org>
---
 src/include/memlayout.h | 3 ++-
 src/lib/timestamp.c     | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/include/memlayout.h b/src/include/memlayout.h
index 43a1cac..a68b21f 100644
--- a/src/include/memlayout.h
+++ b/src/include/memlayout.h
@@ -75,7 +75,8 @@
 #define DRAM_START(addr) SYMBOL(dram, addr)
 
 #define TIMESTAMP(addr, size) \
-	REGION(timestamp, addr, size, 8)
+	REGION(timestamp, addr, size, 8) \
+	_ = ASSERT(size >= 212, "Timestamp region must fit timestamp_cache!");
 
 #define PRERAM_CBMEM_CONSOLE(addr, size) \
 	REGION(preram_cbmem_console, addr, size, 4)
diff --git a/src/lib/timestamp.c b/src/lib/timestamp.c
index d8b93f9..2f2a5d8 100644
--- a/src/lib/timestamp.c
+++ b/src/lib/timestamp.c
@@ -27,6 +27,7 @@
 
 #define MAX_TIMESTAMPS 84
 
+/* When changing this number, adjust TIMESTAMP() size ASSERT() in memlayout.h */
 #define MAX_BSS_TIMESTAMP_CACHE 16
 
 struct __attribute__((__packed__)) timestamp_cache {



More information about the coreboot-gerrit mailing list