Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
1 parent
e05083b
commit f691dc2
Showing
7 changed files
with
189 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters