[Skiboot] [PATCH 1/4] Add fwts annotations for critical errors

Stewart Smith stewart at linux.vnet.ibm.com
Mon Jun 20 18:28:17 AEST 2016


Signed-off-by: Stewart Smith <stewart at linux.vnet.ibm.com>
---
 core/hostservices.c | 8 ++++++++
 core/opal.c         | 5 +++++
 core/utils.c        | 7 +++++++
 3 files changed, 20 insertions(+)

diff --git a/core/hostservices.c b/core/hostservices.c
index 672b57f883cf..6aea670943ae 100644
--- a/core/hostservices.c
+++ b/core/hostservices.c
@@ -238,6 +238,10 @@ static void hservice_mark(void)
 
 static void hservice_assert(void)
 {
+	/**
+	 * @fwts-label HBRTassert
+	 * @fwts-advice HBRT triggered assert: you need to debug HBRT
+	 */
 	prlog(PR_EMERG, "HBRT: Assertion from hostservices\n");
 	abort();
 }
@@ -488,6 +492,10 @@ static int hservice_lid_load(uint32_t lid, void **buf, size_t *len)
 	prlog(PR_INFO, "HBRT: Lid load request for 0x%08x\n", lid);
 
 	if (list_empty(&hbrt_lid_list))	{ /* Should not happen */
+		/**
+		 * @fwts-label HBRTlidLoadFail
+		 * @fwts-advice Firmware should have aborted boot
+		 */
 		prlog(PR_CRIT, "HBRT: LID Load failed\n");
 		abort();
 	}
diff --git a/core/opal.c b/core/opal.c
index b6411f0c9b06..a9d3c41e4cd3 100644
--- a/core/opal.c
+++ b/core/opal.c
@@ -269,6 +269,11 @@ void opal_del_poller(void (*poller)(void *data))
 	 * if anybody uses it, print a warning and leak the entry, don't
 	 * free it.
 	 */
+	/**
+	 * @fwts-label UnsupportedOPALdelpoller
+	 * @fwts-advice Currently removing a poller is DANGEROUS and
+	 * MUST NOT be done in production firmware.
+	 */
 	prlog(PR_ALERT, "WARNING: Unsupported opal_del_poller."
 	      " Interesting locking issues, don't call this.\n");
 
diff --git a/core/utils.c b/core/utils.c
index 4bb89df06f63..d21881efed9b 100644
--- a/core/utils.c
+++ b/core/utils.c
@@ -27,6 +27,13 @@ unsigned long __stack_chk_guard = 0xdeadf00dbaad300dULL;
 
 void __noreturn assert_fail(const char *msg)
 {
+	/**
+	 * @fwts-label FailedAssert
+	 * @fwts-advice OPAL hit an assert(). During normal usage (even
+	 * testing) we should never hit an assert. There are other code
+	 * paths for controlled shutdown/panic in the event of catastrophic
+	 * errors.
+	 */
 	prlog(PR_EMERG, "Assert fail: %s\n", msg);
 	_abort(msg);
 }
-- 
2.1.4



More information about the Skiboot mailing list