summaryrefslogtreecommitdiffstats
path: root/src/usr/secureboot/trusted/base/trustedboot_base.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/secureboot/trusted/base/trustedboot_base.C')
-rw-r--r--src/usr/secureboot/trusted/base/trustedboot_base.C48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/usr/secureboot/trusted/base/trustedboot_base.C b/src/usr/secureboot/trusted/base/trustedboot_base.C
index 5050c9a99..090cac160 100644
--- a/src/usr/secureboot/trusted/base/trustedboot_base.C
+++ b/src/usr/secureboot/trusted/base/trustedboot_base.C
@@ -802,4 +802,52 @@ errlHndl_t testCmpPrimaryAndBackupTpm()
return l_err;
}
+errlHndl_t flushTpmQueue()
+{
+ errlHndl_t l_errl = nullptr;
+#ifdef CONFIG_TPMDD
+ TRACFCOMP(g_trac_trustedboot, ENTER_MRK"flushTpmQueue()");
+
+ Message* l_msg = Message::factory(MSG_TYPE_FLUSH,
+ 0,
+ nullptr,
+ MSG_MODE_SYNC);
+
+ assert(l_msg != nullptr, "TPM flush message is nullptr");
+
+ int l_rc = msg_sendrecv(systemData.msgQ, l_msg->iv_msg);
+ if(l_rc)
+ {
+ /*@
+ * @errortype ERRL_SEV_UNRECOVERABLE
+ * @moduleid MOD_FLUSH_TPM_QUEUE
+ * @reasoncode RC_SENDRECV_FAIL
+ * @userdata1 rc from msq_sendrecv()
+ * @devdesc msg_sendrecv() failed trying to send flush message to
+ * TPM daemon
+ * @custdesc Trusted boot failure
+ */
+ l_errl = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ MOD_FLUSH_TPM_QUEUE,
+ RC_SENDRECV_FAIL,
+ l_rc,
+ 0,
+ true);
+ l_errl->collectTrace(SECURE_COMP_NAME);
+ l_errl->collectTrace(TRBOOT_COMP_NAME);
+ }
+ else
+ {
+ l_errl = l_msg->iv_errl;
+ l_msg->iv_errl = nullptr;
+ }
+
+ delete l_msg;
+ l_msg = nullptr;
+
+ TRACFCOMP(g_trac_trustedboot, EXIT_MRK"flushTpmQueue()");
+#endif
+ return l_errl;
+}
+
} // end TRUSTEDBOOT
OpenPOWER on IntegriCloud