Felix Held has submitted this change. ( https://review.coreboot.org/c/coreboot/+/63300 )
Change subject: ELOG: Refactor watchdog_tombstone ......................................................................
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 --- M src/include/symbols.h M src/vendorcode/google/chromeos/chromeos.h D src/vendorcode/google/chromeos/symbols.h M src/vendorcode/google/chromeos/watchdog.c 4 files changed, 13 insertions(+), 16 deletions(-)
Approvals: build bot (Jenkins): Verified Julius Werner: Looks good to me, approved
diff --git a/src/include/symbols.h b/src/include/symbols.h index 3e4694b..ee7c503 100644 --- a/src/include/symbols.h +++ b/src/include/symbols.h @@ -76,6 +76,7 @@ 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 34a9f57..2ab51be 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 45f9c3e..0000000 --- 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 d3273cb..0aa1762 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 @@ 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 @@ 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));