summaryrefslogtreecommitdiff
path: root/common/main.c
diff options
context:
space:
mode:
authorShannon Chen <shannc@google.com>2019-08-02 17:48:58 +0800
committerCommit Bot <commit-bot@chromium.org>2019-08-21 04:58:22 +0000
commit2fb1836646a1f4edcea1f22408535872b833d14e (patch)
tree3fead01aba3c47b18c85f462e88cf505fb4f4464 /common/main.c
parent10d0ea416eac754b94858c491efdd56cf1ef2476 (diff)
downloadchrome-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.c16
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