From 40fc6cd1416b94eacb96d56015a8989fc053d9fe Mon Sep 17 00:00:00 2001 From: Juan Castillo Date: Fri, 25 Sep 2015 15:41:14 +0100 Subject: Add optional platform error handler API This patch adds an optional API to the platform port: void plat_error_handler(int err) __dead2; The platform error handler is called when there is a specific error condition after which Trusted Firmware cannot continue. While panic() simply prints the crash report (if enabled) and spins, the platform error handler can be used to hand control over to the platform port so it can perform specific bookeeping or post-error actions (for example, reset the system). This function must not return. The parameter indicates the type of error using standard codes from errno.h. Possible errors reported by the generic code are: -EAUTH : a certificate or image could not be authenticated (when Trusted Board Boot is enabled) -ENOENT : the requested image or certificate could not be found or an IO error was detected -ENOMEM : resources exhausted. Trusted Firmware does not use dynamic memory, so this error is usually an indication of an incorrect array size A default weak implementation of this function has been provided. It simply implements an infinite loop. Change-Id: Iffaf9eee82d037da6caa43b3aed51df555e597a3 --- bl2/bl2_main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'bl2') diff --git a/bl2/bl2_main.c b/bl2/bl2_main.c index 404744b7..f8a2372f 100644 --- a/bl2/bl2_main.c +++ b/bl2/bl2_main.c @@ -219,7 +219,7 @@ void bl2_main(void) e = load_bl30(); if (e) { ERROR("Failed to load BL3-0 (%i)\n", e); - panic(); + plat_error_handler(e); } /* Perform platform setup in BL2 after loading BL3-0 */ @@ -235,14 +235,14 @@ void bl2_main(void) e = load_bl31(bl2_to_bl31_params, bl31_ep_info); if (e) { ERROR("Failed to load BL3-1 (%i)\n", e); - panic(); + plat_error_handler(e); } e = load_bl32(bl2_to_bl31_params); if (e) { if (e == -EAUTH) { ERROR("Failed to authenticate BL3-2\n"); - panic(); + plat_error_handler(e); } else { WARN("Failed to load BL3-2 (%i)\n", e); } @@ -251,7 +251,7 @@ void bl2_main(void) e = load_bl33(bl2_to_bl31_params); if (e) { ERROR("Failed to load BL3-3 (%i)\n", e); - panic(); + plat_error_handler(e); } /* Flush the params to be passed to memory */ -- cgit v1.2.3