diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2021-02-11 07:18:29 +0200 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2022-04-06 23:42:56 +0000 |
commit | 662353ac3e75409512c0f49b978cda4c0b9fd7fe (patch) | |
tree | b769bbab19c484ac84581a6e38197e11c76b27a1 /src | |
parent | 24a20e4d21ab02b0cf5f31e22014e35cff585d21 (diff) |
ELOG: Refactor watchdog_tombstone
The symbol watchdog_tombstone is not really about ChromeOS
but ELOG instead. This prepares for furher move of the
watchdog_tombstone implementation.
Change-Id: I8446fa1a395b2d17912a23b87b83277c80828874
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/63300
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/include/symbols.h | 1 | ||||
-rw-r--r-- | src/vendorcode/google/chromeos/chromeos.h | 1 | ||||
-rw-r--r-- | src/vendorcode/google/chromeos/symbols.h | 10 | ||||
-rw-r--r-- | src/vendorcode/google/chromeos/watchdog.c | 17 |
4 files changed, 13 insertions, 16 deletions
diff --git a/src/include/symbols.h b/src/include/symbols.h index 3e4694b90d..ee7c5031fa 100644 --- a/src/include/symbols.h +++ b/src/include/symbols.h @@ -76,6 +76,7 @@ DECLARE_REGION(pdpt) DECLARE_OPTIONAL_REGION(opensbi) DECLARE_OPTIONAL_REGION(bl31) DECLARE_REGION(transfer_buffer) +DECLARE_OPTIONAL_REGION(watchdog_tombstone) /* Returns true when pre-RAM symbols are known to the linker. * (Does not necessarily mean that the memory is accessible.) */ diff --git a/src/vendorcode/google/chromeos/chromeos.h b/src/vendorcode/google/chromeos/chromeos.h index 34a9f57a8d..2ab51bebeb 100644 --- a/src/vendorcode/google/chromeos/chromeos.h +++ b/src/vendorcode/google/chromeos/chromeos.h @@ -11,6 +11,7 @@ /* functions implemented in watchdog.c */ void mark_watchdog_tombstone(void); void reboot_from_watchdog(void); +bool reset_watchdog_tombstone(void); #else static inline void mark_watchdog_tombstone(void) { return; } static inline void reboot_from_watchdog(void) { return; } diff --git a/src/vendorcode/google/chromeos/symbols.h b/src/vendorcode/google/chromeos/symbols.h deleted file mode 100644 index 45f9c3e10b..0000000000 --- a/src/vendorcode/google/chromeos/symbols.h +++ /dev/null @@ -1,10 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#ifndef __CHROMEOS_SYMBOLS_H -#define __CHROMEOS_SYMBOLS_H - -#include <symbols.h> - -DECLARE_OPTIONAL_REGION(watchdog_tombstone) - -#endif /* __CHROMEOS_SYMBOLS_H */ diff --git a/src/vendorcode/google/chromeos/watchdog.c b/src/vendorcode/google/chromeos/watchdog.c index d3273cb442..0aa1762a6c 100644 --- a/src/vendorcode/google/chromeos/watchdog.c +++ b/src/vendorcode/google/chromeos/watchdog.c @@ -10,7 +10,6 @@ #include <symbols.h> #include "chromeos.h" -#include "symbols.h" #define WATCHDOG_TOMBSTONE_MAGIC 0x9d2f41a7 @@ -21,11 +20,7 @@ static void elog_handle_watchdog_tombstone(void *unused) if (CONFIG(CHROMEOS_USE_EC_WATCHDOG_FLAG)) flag |= google_chromeec_get_ap_watchdog_flag(); - if (REGION_SIZE(watchdog_tombstone)) { - flag |= (read32(_watchdog_tombstone) == - WATCHDOG_TOMBSTONE_MAGIC); - write32(_watchdog_tombstone, 0); - } + flag |= reset_watchdog_tombstone(); if (flag) elog_add_event(ELOG_TYPE_ASYNC_HW_TIMER_EXPIRED); @@ -34,6 +29,16 @@ static void elog_handle_watchdog_tombstone(void *unused) BOOT_STATE_INIT_ENTRY(BS_POST_DEVICE, BS_ON_ENTRY, elog_handle_watchdog_tombstone, NULL); +bool reset_watchdog_tombstone(void) +{ + if (!REGION_SIZE(watchdog_tombstone)) + return false; + + bool flag = (read32(_watchdog_tombstone) == WATCHDOG_TOMBSTONE_MAGIC); + write32(_watchdog_tombstone, 0); + return flag; +} + void mark_watchdog_tombstone(void) { assert(REGION_SIZE(watchdog_tombstone)); |