UPSTREAM: 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.

BUG=None
BRANCH=None
TEST=None

Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/16270
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com>

Change-Id: Ibe4301fb89c47fde28e883fd11647d6b62a66fb0
Reviewed-on: https://chromium-review.googlesource.com/374461
Commit-Ready: Furquan Shaikh <furquan@chromium.org>
Tested-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
This commit is contained in:
Julius Werner 2016-08-19 15:17:42 -07:00 committed by chrome-bot
commit 8635ec8dc7
2 changed files with 3 additions and 1 deletions

View file

@ -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)

View file

@ -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 {