diff options
-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)); |