summaryrefslogtreecommitdiffstats
path: root/src/usr/sbeio
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/usr/sbeio
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/usr/sbeio')
-rw-r--r--src/usr/sbeio/runtime/makefile3
-rw-r--r--src/usr/sbeio/runtime/rt_sbeio.C7
-rw-r--r--src/usr/sbeio/runtime/sbeio_nvdimm_operation.C64
3 files changed, 72 insertions, 2 deletions
diff --git a/src/usr/sbeio/runtime/makefile b/src/usr/sbeio/runtime/makefile
index 37792b554..e50153946 100644
--- a/src/usr/sbeio/runtime/makefile
+++ b/src/usr/sbeio/runtime/makefile
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2017,2018
+# Contributors Listed Below - COPYRIGHT 2017,2019
# [+] International Business Machines Corp.
#
#
@@ -37,6 +37,7 @@ include ../common/common.mk
## Objects unique to HBRT
OBJS += rt_sbeio.o
OBJS += sbeio_attr_override.o
+OBJS += sbeio_nvdimm_operation.o
OBJS += sbeio_vital_attn.o
## sbeio_rt's sub directories
diff --git a/src/usr/sbeio/runtime/rt_sbeio.C b/src/usr/sbeio/runtime/rt_sbeio.C
index 3aed96db6..360a144cd 100644
--- a/src/usr/sbeio/runtime/rt_sbeio.C
+++ b/src/usr/sbeio/runtime/rt_sbeio.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2017,2018 */
+/* Contributors Listed Below - COPYRIGHT 2017,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -29,6 +29,7 @@
#include <sys/misc.h>
#include <sbeio/runtime/sbe_msg_passing.H>
#include <sbeio/runtime/sbeio_attr_override.H>
+#include <sbeio/runtime/sbeio_nvdimm_operation.H>
#include <sbeio/sbeioreasoncodes.H>
#include <errno.h>
#include <errl/errlentry.H>
@@ -782,6 +783,10 @@ namespace RT_SBEIO
#endif
SBE_MSG::setProcessCmdFunction(PASSTHRU_HBRT_OVERRIDE_ATTR,
sbeApplyAttrOverrides);
+#ifdef CONFIG_NVDIMM
+ SBE_MSG::setProcessCmdFunction(PASSTHRU_HBRT_NVDIMM_OP,
+ sbeNvdimmOperation);
+#endif
}
};
diff --git a/src/usr/sbeio/runtime/sbeio_nvdimm_operation.C b/src/usr/sbeio/runtime/sbeio_nvdimm_operation.C
new file mode 100644
index 000000000..f41cd01a5
--- /dev/null
+++ b/src/usr/sbeio/runtime/sbeio_nvdimm_operation.C
@@ -0,0 +1,64 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/sbeio/runtime/sbeio_nvdimm_operation.C $ */
+/* */
+/* 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 */
+#include <sbeio/runtime/sbeio_nvdimm_operation.H>
+
+#include <runtime/interface.h>
+#include <util/runtime/rt_fwnotify.H>
+#include <sbeio/sbeioreasoncodes.H>
+#include <errl/errlentry.H>
+
+extern trace_desc_t* g_trac_sbeio;
+
+using namespace ERRORLOG;
+
+namespace SBE_MSG
+{
+
+//-------------------------------------------------------------------------
+errlHndl_t sbeNvdimmOperation( TARGETING::TargetHandle_t i_procTgt,
+ uint32_t i_reqDataSize,
+ uint8_t * i_reqData,
+ uint32_t * o_rspStatus,
+ uint32_t * o_rspDataSize,
+ uint8_t * o_rspData )
+{
+ errlHndl_t errl{};
+
+ do
+ {
+ *o_rspDataSize = 0; //No return data
+ o_rspData = nullptr;
+
+ // doNvDimmOperation will take care of handling errors it encounters.
+ hostInterfaces::nvdimm_operation_t* l_nvdimmOp =
+ reinterpret_cast<hostInterfaces::nvdimm_operation_t*>(i_reqData);
+ *o_rspStatus = doNvDimmOperation(*l_nvdimmOp);
+ }
+ while(0);
+
+ return errl;
+}
+
+}//End namespace
OpenPOWER on IntegriCloud