From 662353ac3e75409512c0f49b978cda4c0b9fd7fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ky=C3=B6sti=20M=C3=A4lkki?= Date: Thu, 11 Feb 2021 07:18:29 +0200 Subject: ELOG: Refactor watchdog_tombstone MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-on: https://review.coreboot.org/c/coreboot/+/63300 Tested-by: build bot (Jenkins) Reviewed-by: Julius Werner --- src/include/symbols.h | 1 + src/vendorcode/google/chromeos/chromeos.h | 1 + src/vendorcode/google/chromeos/symbols.h | 10 ---------- src/vendorcode/google/chromeos/watchdog.c | 17 +++++++++++------ 4 files changed, 13 insertions(+), 16 deletions(-) delete mode 100644 src/vendorcode/google/chromeos/symbols.h 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 - -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 #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)); -- cgit v1.2.3