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