diff options
author | Corey Swenson <cswenson@us.ibm.com> | 2019-11-20 16:26:49 -0600 |
---|---|---|
committer | Daniel M Crowell <dcrowell@us.ibm.com> | 2019-12-12 15:13:53 -0600 |
commit | 5eaa67a665bf3c6d4809718f8f98838c2af80d6b (patch) | |
tree | aa7cde0a48830db2a95fdde05953a53a05c8368b /src/usr/isteps/nvdimm/runtime | |
parent | ea01d258c6f7493c3c33f8404ce4af3eaf61ef22 (diff) | |
download | talos-hostboot-5eaa67a665bf3c6d4809718f8f98838c2af80d6b.tar.gz talos-hostboot-5eaa67a665bf3c6d4809718f8f98838c2af80d6b.zip |
Always send NV_STATUS to Opal when opal-prd starts
Opal does not persist NVDIMM status state so HBRT
must send this info to Opal when opal-prd starts.
Change-Id: I0771c63ff2857f9b70fbfad5760267e3da463009
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/87541
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: Roland Veloz <rveloz@us.ibm.com>
Reviewed-by: Matt Derksen <mderkse1@us.ibm.com>
Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/isteps/nvdimm/runtime')
-rw-r--r-- | src/usr/isteps/nvdimm/runtime/nvdimm_rt.C | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/usr/isteps/nvdimm/runtime/nvdimm_rt.C b/src/usr/isteps/nvdimm/runtime/nvdimm_rt.C index 32c4dd18f..f22c7d33a 100644 --- a/src/usr/isteps/nvdimm/runtime/nvdimm_rt.C +++ b/src/usr/isteps/nvdimm/runtime/nvdimm_rt.C @@ -1021,4 +1021,36 @@ bool nvDimmNvmCheckHealthStatusOnSystem() } // end nvDimmCheckHealthStatusOnSystem +/** + * @brief Send NV_STATUS to host + */ +void nvdimmSendNvStatus() +{ + // Send NV_STATUS for all nvdimms + TargetHandleList l_nvdimmTargetList; + nvdimm_getNvdimmList(l_nvdimmTargetList); + for (const auto & l_nvdimm : l_nvdimmTargetList) + { + errlHndl_t l_err = nullptr; + l_err = notifyNvdimmProtectionChange(l_nvdimm,SEND_NV_STATUS); + if (l_err) + { + errlCommit(l_err, NVDIMM_COMP_ID); + } + } +} + + +struct registerNvdimmRt +{ + registerNvdimmRt() + { + // Register function to call at end of RT init + postInitCalls_t * rt_post = getPostInitCalls(); + rt_post->callSendNvStatus = &nvdimmSendNvStatus; + } +}; + +registerNvdimmRt g_registerNvdimmRt; + } // end NVDIMM namespace |