summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorCorey Swenson <cswenson@us.ibm.com>2019-07-23 17:25:27 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-08-19 10:46:12 -0500
commitf691dc23accc3b86a8fc2c301c907aa7140955b1 (patch)
treed4df65397c613f202b5f17bfec807e7a4770f27f /src/include
parente05083bbd3e02927b9a9205d805bd87b6bb5f56c (diff)
downloadtalos-hostboot-f691dc23accc3b86a8fc2c301c907aa7140955b1.tar.gz
talos-hostboot-f691dc23accc3b86a8fc2c301c907aa7140955b1.zip
HBRT command from SBE to trigger NVDIMM operations
Add support for calling NVDIMM operations through the SBE message passing interface Change-Id: Iae94166a411f134771f461dd3a63806721904368 RTC:211725 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/80856 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Matt Derksen <mderkse1@us.ibm.com> Reviewed-by: Glenn Miles <milesg@ibm.com> Reviewed-by: Roland Veloz <rveloz@us.ibm.com> Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/usr/sbeio/runtime/sbe_msg_passing.H3
-rw-r--r--src/include/usr/sbeio/runtime/sbeio_nvdimm_operation.H58
-rw-r--r--src/include/usr/util/runtime/rt_fwnotify.H45
3 files changed, 105 insertions, 1 deletions
diff --git a/src/include/usr/sbeio/runtime/sbe_msg_passing.H b/src/include/usr/sbeio/runtime/sbe_msg_passing.H
index e50b4493e..e280e3e2f 100644
--- a/src/include/usr/sbeio/runtime/sbe_msg_passing.H
+++ b/src/include/usr/sbeio/runtime/sbe_msg_passing.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2017,2018 */
+/* Contributors Listed Below - COPYRIGHT 2017,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -90,6 +90,7 @@ namespace SBE_MSG
PASSTHRU_HBRT_GET_PSTATE = 0x00E10001, // HBRT Get PState Table
PASSTHRU_HBRT_OVERRIDE_ATTR = 0x00E10002, // HBRT Apply Override
// attributes
+ PASSTHRU_HBRT_NVDIMM_OP = 0x00E10003, // HBRT NVDIMM operation
};
diff --git a/src/include/usr/sbeio/runtime/sbeio_nvdimm_operation.H b/src/include/usr/sbeio/runtime/sbeio_nvdimm_operation.H
new file mode 100644
index 000000000..2b650bfae
--- /dev/null
+++ b/src/include/usr/sbeio/runtime/sbeio_nvdimm_operation.H
@@ -0,0 +1,58 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/usr/sbeio/runtime/sbeio_nvdimm_operation.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2017,2019 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+#ifndef __SBE_MSG_SBEIO_NVDIMM_OPERATION_H
+#define __SBE_MSG_SBEIO_NVDIMM_OPERATION_H
+
+#include <errl/errlentry.H>
+#include <targeting/common/target.H>
+
+namespace SBE_MSG
+{
+
+/**
+ * @brief SBE pass-through command for executing nvdimm operations at runtime.
+ * This command acts as a bridge between sbe pass-through and the
+ * runtime doNvDimmOperation function.
+ *
+ * @param[in] i_targetHandle - The target of the request.
+ * @param[in] i_reqDataSize - Size of the nvdimm operation blob.
+ * @param[in] i_reqData - NVDIMM operation data.
+ * @param[out] o_rspStatus - The return value from doNvDimmOperation
+ * @param[out] o_rspDataSize - Set to 0 on return.
+ * @param[out] o_rspData - Not Used.
+ *
+ * @return nullptr upon success, pointer to ErrlEntry if an error occurred.
+ *
+ */
+errlHndl_t sbeNvdimmOperation( TARGETING::TargetHandle_t i_targetHandle,
+ uint32_t i_reqDataSize,
+ uint8_t * i_reqData,
+ uint32_t * o_rspStatus,
+ uint32_t * o_rspDataSize,
+ uint8_t * o_rspData );
+
+}
+
+#endif
diff --git a/src/include/usr/util/runtime/rt_fwnotify.H b/src/include/usr/util/runtime/rt_fwnotify.H
new file mode 100644
index 000000000..1f6bc7efb
--- /dev/null
+++ b/src/include/usr/util/runtime/rt_fwnotify.H
@@ -0,0 +1,45 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/usr/util/runtime/rt_fwnotify.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2010,2019 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+#ifndef __RUNTIME_FWNOTIFY_H
+#define __RUNTIME_FWNOTIFY_H
+
+#include <runtime/interface.h>
+
+/**
+ * @brief Perform an NVDIMM operation
+ * @param[in] nvDimmOp - A struct that contains the operation(s) to perform
+ * and a flag indicating whether to perform operation
+ * on all processors or a given single processor.
+ * @Note The operations below are in the order of which they should be
+ * performed. If a new operation is added, make sure it inserted in the
+ * correct order.
+ * The current order is: disarm -> disable encryption -> remove keys ->
+ * enable encryption -> arm
+ **/
+int doNvDimmOperation(const hostInterfaces::nvdimm_operation_t& nvDimmOp);
+
+
+
+#endif // __RUNTIME_FWNOTIFY_H
OpenPOWER on IntegriCloud