Initial commit for TF-A CI scripts
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
diff --git a/patch/fault_inject/injected-fault-record-and-handler.patch b/patch/fault_inject/injected-fault-record-and-handler.patch
new file mode 100644
index 0000000..75e68d9
--- /dev/null
+++ b/patch/fault_inject/injected-fault-record-and-handler.patch
@@ -0,0 +1,49 @@
+--- a/plat/arm/board/fvp/aarch64/fvp_ras.c
++++ b/plat/arm/board/fvp/aarch64/fvp_ras.c
+@@ -5,11 +5,46 @@
+ */
+
+ #include <lib/extensions/ras.h>
++#include <services/sdei.h>
++
++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 __unused;
++
++ /*
++ * 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%llx\n",
++ probe_data, read_mpidr_el1(), status);
++ ERROR(" exception reason=%u syndrome=0x%llx\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;
++}
+
+ struct ras_interrupt fvp_ras_interrupts[] = {
+ };
+
+ struct err_record_info fvp_err_records[] = {
++ /* Record for injected fault */
++ ERR_RECORD_SYSREG_V1(0, 2, ras_err_ser_probe_sysreg,
++ injected_fault_handler, NULL),
+ };
+
+ REGISTER_ERR_RECORD_INFO(fvp_err_records);