mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-18 02:24:18 +00:00
Merge "feat(fvp): introduce PLATFORM_TEST_RAS_FFH config" into integration
This commit is contained in:
commit
865aff3066
3 changed files with 72 additions and 3 deletions
|
@ -4,12 +4,63 @@
|
|||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include <lib/extensions/ras.h>
|
||||
#include <services/sdei.h>
|
||||
|
||||
#ifdef PLATFORM_TEST_RAS_FFH
|
||||
static int injected_fault_handler(const struct err_record_info *info,
|
||||
int probe_data, const struct err_handler_data *const data)
|
||||
{
|
||||
uint64_t status;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* The faulting error record is already selected by the SER probe
|
||||
* function.
|
||||
*/
|
||||
status = read_erxstatus_el1();
|
||||
|
||||
ERROR("Fault reported by system error record %d on 0x%lx: status=0x%" PRIx64 "\n",
|
||||
probe_data, read_mpidr_el1(), status);
|
||||
ERROR(" exception reason=%u syndrome=0x%" PRIx64 "\n", data->ea_reason,
|
||||
data->flags);
|
||||
|
||||
/* Clear error */
|
||||
write_erxstatus_el1(status);
|
||||
|
||||
ret = sdei_dispatch_event(5000);
|
||||
if (ret < 0) {
|
||||
ERROR("Can't dispatch event to SDEI\n");
|
||||
panic();
|
||||
} else {
|
||||
INFO("SDEI event dispatched\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void plat_handle_uncontainable_ea(void)
|
||||
{
|
||||
/* Do not change the string, CI expects it. Wait forever */
|
||||
INFO("Injected Uncontainable Error\n");
|
||||
while (true) {
|
||||
wfe();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
struct ras_interrupt fvp_ras_interrupts[] = {
|
||||
};
|
||||
|
||||
struct err_record_info fvp_err_records[] = {
|
||||
#ifdef PLATFORM_TEST_RAS_FFH
|
||||
/* Record for injected fault */
|
||||
ERR_RECORD_SYSREG_V1(0, 2, ras_err_ser_probe_sysreg,
|
||||
injected_fault_handler, NULL),
|
||||
#endif
|
||||
};
|
||||
|
||||
REGISTER_ERR_RECORD_INFO(fvp_err_records);
|
||||
|
|
|
@ -397,7 +397,17 @@ defined(IMAGE_BL2) && MEASURED_BOOT
|
|||
#define PLAT_SDEI_DP_EVENT_MAX_CNT ARM_SDEI_DP_EVENT_MAX_CNT
|
||||
#define PLAT_SDEI_DS_EVENT_MAX_CNT ARM_SDEI_DS_EVENT_MAX_CNT
|
||||
#else
|
||||
#define PLAT_ARM_PRIVATE_SDEI_EVENTS ARM_SDEI_PRIVATE_EVENTS
|
||||
#if PLATFORM_TEST_RAS_FFH
|
||||
#define PLAT_ARM_PRIVATE_SDEI_EVENTS \
|
||||
ARM_SDEI_PRIVATE_EVENTS, \
|
||||
SDEI_EXPLICIT_EVENT(5000, SDEI_MAPF_NORMAL), \
|
||||
SDEI_EXPLICIT_EVENT(5001, SDEI_MAPF_NORMAL), \
|
||||
SDEI_EXPLICIT_EVENT(5002, SDEI_MAPF_NORMAL), \
|
||||
SDEI_EXPLICIT_EVENT(5003, SDEI_MAPF_CRITICAL), \
|
||||
SDEI_EXPLICIT_EVENT(5004, SDEI_MAPF_CRITICAL)
|
||||
#else
|
||||
#define PLAT_ARM_PRIVATE_SDEI_EVENTS ARM_SDEI_PRIVATE_EVENTS
|
||||
#endif
|
||||
#define PLAT_ARM_SHARED_SDEI_EVENTS ARM_SDEI_SHARED_EVENTS
|
||||
#endif
|
||||
|
||||
|
|
|
@ -505,6 +505,11 @@ endif
|
|||
|
||||
PSCI_OS_INIT_MODE := 1
|
||||
|
||||
ifeq (${SPD},spmd)
|
||||
BL31_SOURCES += plat/arm/board/fvp/fvp_spmd.c
|
||||
endif
|
||||
|
||||
# Test specific macros, keep them at bottom of this file
|
||||
$(eval $(call add_define,PLATFORM_TEST_EA_FFH))
|
||||
ifeq (${PLATFORM_TEST_EA_FFH}, 1)
|
||||
ifeq (${HANDLE_EA_EL3_FIRST_NS}, 0)
|
||||
|
@ -513,6 +518,9 @@ ifeq (${PLATFORM_TEST_EA_FFH}, 1)
|
|||
BL31_SOURCES += plat/arm/board/fvp/aarch64/fvp_ea.c
|
||||
endif
|
||||
|
||||
ifeq (${SPD},spmd)
|
||||
BL31_SOURCES += plat/arm/board/fvp/fvp_spmd.c
|
||||
$(eval $(call add_define,PLATFORM_TEST_RAS_FFH))
|
||||
ifeq (${PLATFORM_TEST_RAS_FFH}, 1)
|
||||
ifeq (${RAS_EXTENSION}, 0)
|
||||
$(error "PLATFORM_TEST_RAS_FFH expects RAS_EXTENSION to be 1")
|
||||
endif
|
||||
endif
|
||||
|
|
Loading…
Add table
Reference in a new issue