summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps/nvdimm/runtime
diff options
context:
space:
mode:
authorCorey Swenson <cswenson@us.ibm.com>2019-11-20 16:26:49 -0600
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-12-12 15:13:53 -0600
commit5eaa67a665bf3c6d4809718f8f98838c2af80d6b (patch)
treeaa7cde0a48830db2a95fdde05953a53a05c8368b /src/usr/isteps/nvdimm/runtime
parentea01d258c6f7493c3c33f8404ce4af3eaf61ef22 (diff)
downloadtalos-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.C32
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
OpenPOWER on IntegriCloud