diff options
author | Shannon Chen <shannc@google.com> | 2019-08-02 17:48:58 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-08-21 04:58:22 +0000 |
commit | 2fb1836646a1f4edcea1f22408535872b833d14e (patch) | |
tree | 3fead01aba3c47b18c85f462e88cf505fb4f4464 /common/main.c | |
parent | 10d0ea416eac754b94858c491efdd56cf1ef2476 (diff) | |
download | chrome-ec-2fb1836646a1f4edcea1f22408535872b833d14e.tar.gz |
log: Preserve Kukui EC reset logs across every EC reboot on SRAM.
On Kukui, we need to put console logs and reset reasons at fixed
addresses on SRAM to save the information across each EC resets.
Otherwise, EC will lose console logs and reset reasons after resetting
EC.
This CL ensures that the contents of reset and console logs will not be
clobbered or cleared by putting mandatory symbols at a fixed location on
SRAM. The values will only be reset when checksum or sanity check fails.
BUG=b:133795403
TEST=1. On Kukui, shutdown AP, reboot AP, or sysjump, and see
the previous logs before reboot will be kept
on /var/log/croc_ec.log
2. Reset reasons can be viewed with ectool uptimeinfo
BRANCH=master
Change-Id: I19db49101fda1675dc2fdc047b7f14af77cdb6e6
Signed-off-by: Shannon Chen <shannc@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1716671
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Yilun Lin <yllin@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Commit-Queue: Shannon Chen <shannc@chromium.org>
Tested-by: Shannon Chen <shannc@chromium.org>
Diffstat (limited to 'common/main.c')
-rw-r--r-- | common/main.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/common/main.c b/common/main.c index 069b20dd17..c5e63e7faa 100644 --- a/common/main.c +++ b/common/main.c @@ -39,6 +39,22 @@ test_mockable __keep int main(void) { + if (IS_ENABLED(CONFIG_PRESERVE_LOGS)) { + /* + * Initialize tx buffer head and tail. This needs to be done + * before any updates of uart tx input because we need to + * verify if the values remain the same after every EC reset. + */ + uart_init_buffer(); + + /* + * Initialize reset logs. Needs to be done before any updates of + * reset logs because we need to verify if the values remain + * the same after every EC reset. + */ + init_reset_log(); + } + /* * Pre-initialization (pre-verified boot) stage. Initialization at * this level should do as little as possible, because verified boot |