From 30e8fa7e779851aeb8a2bae990bf090b8bc06b3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pali=20Roh=C3=A1r?= Date: Mon, 21 Jun 2021 17:22:27 +0200 Subject: refactor(plat/ea_handler): Use default ea handler implementation for panic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Put default ea handler implementation into function plat_default_ea_handler() which just print verbose information and panic, so it can be called also from overwritten / weak function plat_ea_handler() implementation. Replace every custom implementation of printing verbose error message of external aborts in custom plat_ea_handler() functions by a common implementation from plat_default_ea_handler() function. Signed-off-by: Pali Rohár Change-Id: I15897f61b62b4c3c29351e693f51d4df381f3b98 --- include/plat/common/platform.h | 2 ++ plat/common/aarch64/plat_common.c | 4 ++-- plat/marvell/armada/a3k/common/a3700_ea.c | 12 +++++------- plat/nvidia/tegra/soc/t194/plat_ras.c | 5 +---- plat/renesas/common/rcar_common.c | 6 +----- 5 files changed, 11 insertions(+), 18 deletions(-) diff --git a/include/plat/common/platform.h b/include/plat/common/platform.h index 2d5c521db..434835ee7 100644 --- a/include/plat/common/platform.h +++ b/include/plat/common/platform.h @@ -141,6 +141,8 @@ int plat_sdei_validate_entry_point(uintptr_t ep, unsigned int client_mode); void plat_sdei_handle_masked_trigger(uint64_t mpidr, unsigned int intr); #endif +void plat_default_ea_handler(unsigned int ea_reason, uint64_t syndrome, void *cookie, + void *handle, uint64_t flags); void plat_ea_handler(unsigned int ea_reason, uint64_t syndrome, void *cookie, void *handle, uint64_t flags); diff --git a/plat/common/aarch64/plat_common.c b/plat/common/aarch64/plat_common.c index 5b3262c7d..345fec36a 100644 --- a/plat/common/aarch64/plat_common.c +++ b/plat/common/aarch64/plat_common.c @@ -28,7 +28,7 @@ #pragma weak plat_sdei_validate_entry_point #endif -#pragma weak plat_ea_handler +#pragma weak plat_ea_handler = plat_default_ea_handler void bl31_plat_runtime_setup(void) { @@ -79,7 +79,7 @@ static const char *get_el_str(unsigned int el) #endif /* !ENABLE_BACKTRACE */ /* RAS functions common to AArch64 ARM platforms */ -void plat_ea_handler(unsigned int ea_reason, uint64_t syndrome, void *cookie, +void plat_default_ea_handler(unsigned int ea_reason, uint64_t syndrome, void *cookie, void *handle, uint64_t flags) { #if RAS_EXTENSION diff --git a/plat/marvell/armada/a3k/common/a3700_ea.c b/plat/marvell/armada/a3k/common/a3700_ea.c index dd46beb55..3a4f7203b 100644 --- a/plat/marvell/armada/a3k/common/a3700_ea.c +++ b/plat/marvell/armada/a3k/common/a3700_ea.c @@ -7,17 +7,15 @@ #include #include #include +#include #define ADVK_SERROR_SYNDROME 0xbf000002 void plat_ea_handler(unsigned int ea_reason, uint64_t syndrome, void *cookie, void *handle, uint64_t flags) { - if (syndrome != ADVK_SERROR_SYNDROME) { - ERROR("Unhandled External Abort received on 0x%lx at EL3!\n", - read_mpidr_el1()); - ERROR(" exception reason=%u syndrome=0x%llx\n", ea_reason, - syndrome); - panic(); - } + if (syndrome == ADVK_SERROR_SYNDROME) + return; + + plat_default_ea_handler(ea_reason, syndrome, cookie, handle, flags); } diff --git a/plat/nvidia/tegra/soc/t194/plat_ras.c b/plat/nvidia/tegra/soc/t194/plat_ras.c index 0c4c6fad6..a32240339 100644 --- a/plat/nvidia/tegra/soc/t194/plat_ras.c +++ b/plat/nvidia/tegra/soc/t194/plat_ras.c @@ -493,9 +493,6 @@ void plat_ea_handler(unsigned int ea_reason, uint64_t syndrome, void *cookie, #if RAS_EXTENSION tegra194_ea_handler(ea_reason, syndrome, cookie, handle, flags); #else - ERROR("Unhandled External Abort received on 0x%llx at EL3!\n", - read_mpidr_el1()); - ERROR(" exception reason=%u syndrome=0x%lx\n", ea_reason, syndrome); - panic(); + plat_default_ea_handler(ea_reason, syndrome, cookie, handle, flags); #endif } diff --git a/plat/renesas/common/rcar_common.c b/plat/renesas/common/rcar_common.c index 95e1f6158..df4c30c06 100644 --- a/plat/renesas/common/rcar_common.c +++ b/plat/renesas/common/rcar_common.c @@ -60,11 +60,7 @@ void plat_ea_handler(unsigned int ea_reason, uint64_t syndrome, void *cookie, if (fixed) return; - ERROR("Unhandled External Abort received on 0x%lx at EL3!\n", - read_mpidr_el1()); - ERROR(" exception reason=%u syndrome=0x%llx\n", ea_reason, syndrome); - - panic(); + plat_default_ea_handler(ea_reason, syndrome, cookie, handle, flags); } #include -- cgit v1.2.3