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);