diff --git a/include/plat/common/platform.h b/include/plat/common/platform.h index 2d5c521db2f376db07dc44080f7520487f77505a..434835ee7f763a80bdcac8ae911ecae65ff1b017 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 5b3262c7dcf20a3d3e62a8d653a5290556255c66..345fec36a8b35ce009f7ac107d51a7e1328bc1a7 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 dd46beb55ce055873b1bfc106c3335d75762d167..3a4f7203b2648826ccb9657b16b23fcb73f96483 100644 --- a/plat/marvell/armada/a3k/common/a3700_ea.c +++ b/plat/marvell/armada/a3k/common/a3700_ea.c @@ -7,17 +7,15 @@ #include <common/bl_common.h> #include <common/debug.h> #include <arch_helpers.h> +#include <plat/common/platform.h> #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 0c4c6fad633dea80d2c91740281f67489fbfbefc..a3224033942cf9a560838f0b35d696865b08b707 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 95e1f615884142090fefbbd0e502c415012c98e5..df4c30c061a26be54c2a612795e56110db95f9fa 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 <drivers/renesas/rcar/console/console.h>