summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Cprek <smcprek@us.ibm.com>2017-10-31 13:01:30 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-11-19 15:49:42 -0500
commit63a026113332464fc3bcc73369ba35bfe8f62b6f (patch)
treebeeea6b0db1276ac82bc834f52919145f24219fe
parentf4d54e9c85b36d7d557003ebdfbeb3182636e904 (diff)
downloadtalos-hostboot-63a026113332464fc3bcc73369ba35bfe8f62b6f.tar.gz
talos-hostboot-63a026113332464fc3bcc73369ba35bfe8f62b6f.zip
Create runtime_utils so both IPL and runtime can use common functions
Change-Id: I130f87acdcb841640de7768f1c0abe38e45ce677 RTC: 180063 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49754 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: Nicholas E. Bofferding <bofferdn@us.ibm.com> Reviewed-by: Marshall J. Wilks <mjwilks@us.ibm.com> Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r--src/include/usr/runtime/common/runtime_utils.H48
-rw-r--r--src/include/usr/runtime/populate_hbruntime.H3
-rw-r--r--src/makefile3
-rw-r--r--src/runtime/makefile6
-rw-r--r--src/usr/runtime/common/common.mk25
-rw-r--r--src/usr/runtime/common/runtime_utils.C61
-rw-r--r--src/usr/runtime/makefile4
-rw-r--r--src/usr/runtime/populate_hbruntime.C19
-rw-r--r--src/usr/runtime/test/testpreverifiedlidmgr.H9
9 files changed, 153 insertions, 25 deletions
diff --git a/src/include/usr/runtime/common/runtime_utils.H b/src/include/usr/runtime/common/runtime_utils.H
new file mode 100644
index 000000000..d63a24d7b
--- /dev/null
+++ b/src/include/usr/runtime/common/runtime_utils.H
@@ -0,0 +1,48 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/usr/runtime/common/runtime_utils.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2017 */
+/* [+] 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 <vector>
+#include <utility>
+#include <pnor/pnorif.H>
+
+namespace RUNTIME
+{
+
+typedef std::pair<PNOR::SectionId, bool> PreVerifyPair;
+typedef std::vector<PreVerifyPair> PreVerifyVector;
+
+// PNOR sections that will be pre-verified and loaded into HB reserved memory
+extern const PreVerifyVector preVerifiedPnorSections;
+
+/**
+ * @brief Determines whether the given section is pre-verified and loaded into
+ * hostboot reserved memory
+ *
+ * @param[in] i_section PNOR section to test.
+ *
+ * @return bool True if pre-verified section, false otherwise.
+ */
+bool isPreVerifiedSection(const PNOR::SectionId i_section);
+
+} \ No newline at end of file
diff --git a/src/include/usr/runtime/populate_hbruntime.H b/src/include/usr/runtime/populate_hbruntime.H
index 7ba405038..03d8b80de 100644
--- a/src/include/usr/runtime/populate_hbruntime.H
+++ b/src/include/usr/runtime/populate_hbruntime.H
@@ -64,9 +64,6 @@ errlHndl_t mapPhysAddr(uint64_t i_addr, size_t i_size, uint64_t& o_addr);
*/
errlHndl_t unmapVirtAddr(uint64_t i_addr);
-// PNOR sections that will be pre-verified and loaded into HB reserved memory
-extern const std::vector<PNOR::SectionId> preVerifiedPnorSections;
-
/**
* @brief Pre verify Pnor sections and load into HB reserved memory
*
diff --git a/src/makefile b/src/makefile
index 725eb82a1..337bbd630 100644
--- a/src/makefile
+++ b/src/makefile
@@ -252,7 +252,7 @@ TESTCASE_MODULES += testfapi2
# @TODO DefecT: 1035550 Figure out why testattn is failing sometimes
#TESTCASE_MODULES += testattn
-
+include ${ROOTPATH}/src/usr/runtime/common/common.mk
RUNTIME_OBJECTS += rt_start.o
RUNTIME_OBJECTS += rt_main.o
@@ -263,6 +263,7 @@ RUNTIME_OBJECTS += rt_assert.o
RUNTIME_OBJECTS += rt_vfs.o
RUNTIME_OBJECTS += rt_task.o
RUNTIME_OBJECTS += rt_time.o
+RUNTIME_OBJECTS += ${RUNTIME_COMMON_OBJS}
RUNTIME_MODULES += trace_rt
RUNTIME_MODULES += errl_rt
diff --git a/src/runtime/makefile b/src/runtime/makefile
index ce84bc4c4..981e00499 100644
--- a/src/runtime/makefile
+++ b/src/runtime/makefile
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2013,2014
+# Contributors Listed Below - COPYRIGHT 2013,2017
# [+] International Business Machines Corp.
#
#
@@ -24,6 +24,9 @@
# IBM_PROLOG_END_TAG
HOSTBOOT_RUNTIME = 1
ROOTPATH = ../..
+include ../usr/runtime/common/common.mk
+VPATH += ../usr/runtime/common
+EXTRAINCDIR += ${ROOTPATH}/src/include/usr/
OBJS += rt_start.o
OBJS += rt_main.o
@@ -34,5 +37,6 @@ OBJS += rt_assert.o
OBJS += rt_vfs.o
OBJS += rt_task.o
OBJS += rt_time.o
+OBJS += ${RUNTIME_COMMON_OBJS}
include ${ROOTPATH}/config.mk
diff --git a/src/usr/runtime/common/common.mk b/src/usr/runtime/common/common.mk
new file mode 100644
index 000000000..bfdbfa36c
--- /dev/null
+++ b/src/usr/runtime/common/common.mk
@@ -0,0 +1,25 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/runtime/common/common.mk $
+#
+# OpenPOWER HostBoot Project
+#
+# Contributors Listed Below - COPYRIGHT 2017
+# [+] 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
+RUNTIME_COMMON_OBJS += runtime_utils.o \ No newline at end of file
diff --git a/src/usr/runtime/common/runtime_utils.C b/src/usr/runtime/common/runtime_utils.C
new file mode 100644
index 000000000..04a42f502
--- /dev/null
+++ b/src/usr/runtime/common/runtime_utils.C
@@ -0,0 +1,61 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/runtime/common/runtime_utils.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2017 */
+/* [+] 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 <runtime/common/runtime_utils.H>
+
+namespace RUNTIME
+{
+
+// -- Verified Images
+// -- OCC
+// -- WOFDATA
+// -- HCODE
+// -- Non-verified Images
+/// -- RINGOVD
+const PreVerifyVector preVerifiedPnorSections {
+ {PNOR::OCC, true},
+ {PNOR::WOFDATA, true},
+ {PNOR::HCODE, true},
+ {PNOR::RINGOVD, false},
+};
+
+bool isPreVerifiedSection(const PNOR::SectionId i_section)
+{
+ bool l_result = false;
+ auto it = find_if(preVerifiedPnorSections.begin(),
+ preVerifiedPnorSections.end(),
+ [&i_section](const PreVerifyPair& p)
+ {
+ return p.first == i_section;
+ });
+
+ if (it != preVerifiedPnorSections.end())
+ {
+ l_result = true;
+ }
+
+ return l_result;
+}
+
+} \ No newline at end of file
diff --git a/src/usr/runtime/makefile b/src/usr/runtime/makefile
index cc53bb3ae..d2ef90f12 100644
--- a/src/usr/runtime/makefile
+++ b/src/usr/runtime/makefile
@@ -31,8 +31,9 @@
ROOTPATH = ../../..
MODULE = runtime
-
+include common/common.mk
VPATH += ${ROOTPATH}/src/usr/hdat
+VPATH += common
OBJS += populate_hbruntime.o
OBJS += hdatservice.o
@@ -41,6 +42,7 @@ OBJS += errlud_hdat.o
OBJS += customize_attrs_for_payload.o
OBJS += hdatcommonutil.o
OBJS += preverifiedlidmgr.o
+OBJS += ${RUNTIME_COMMON_OBJS}
SUBDIRS += test.d
diff --git a/src/usr/runtime/populate_hbruntime.C b/src/usr/runtime/populate_hbruntime.C
index 737897dba..199b55ecb 100644
--- a/src/usr/runtime/populate_hbruntime.C
+++ b/src/usr/runtime/populate_hbruntime.C
@@ -73,24 +73,13 @@
#include <runtime/populate_hbruntime.H>
#include <runtime/preverifiedlidmgr.H>
#include <util/utilmclmgr.H>
+#include <pnor/pnor_reasoncodes.H>
+#include <runtime/common/runtime_utils.H>
namespace RUNTIME
{
-// -- Verified Images
-// -- OCC
-// -- WOFDATA
-// -- HCODE
-// -- Non-verified Images
-/// -- RINGOVD
-const std::vector<PNOR::SectionId> preVerifiedPnorSections {
- PNOR::OCC,
- PNOR::WOFDATA,
- PNOR::HCODE,
- PNOR::RINGOVD,
-};
-
mutex_t g_rhbMutex = MUTEX_INITIALIZER;
// used for populating the TPM required bit in HDAT
@@ -1079,9 +1068,9 @@ errlHndl_t populate_HbRsvMem(uint64_t i_nodeId)
l_preVerLidMgrLock = true;
// Handle all Pre verified PNOR sections
- for (const auto secId : preVerifiedPnorSections)
+ for (const auto & secIdPair : preVerifiedPnorSections)
{
- l_elog = hbResvLoadSecureSection(secId);
+ l_elog = hbResvLoadSecureSection(secIdPair.first);
if (l_elog)
{
break;
diff --git a/src/usr/runtime/test/testpreverifiedlidmgr.H b/src/usr/runtime/test/testpreverifiedlidmgr.H
index 4fca35b5f..3863ed27e 100644
--- a/src/usr/runtime/test/testpreverifiedlidmgr.H
+++ b/src/usr/runtime/test/testpreverifiedlidmgr.H
@@ -32,6 +32,7 @@
#include <usr/vmmconst.h>
#include <runtime/populate_hbruntime.H>
#include <pnor/pnorif.H>
+#include <runtime/common/runtime_utils.H>
extern trace_desc_t* g_trac_runtime;
@@ -80,14 +81,14 @@ class PreVerifiedLidMgrTest : public CxxTest::TestSuite
l_preVerLidMgr.cv_lidsLoaded.clear();
// Handle all Pre verified PNOR sections
- for (const auto secId : RUNTIME::preVerifiedPnorSections)
+ for (const auto & secIdPair : RUNTIME::preVerifiedPnorSections)
{
- l_errl = RUNTIME::hbResvLoadSecureSection(secId);
+ l_errl = RUNTIME::hbResvLoadSecureSection(secIdPair.first);
if (l_errl)
{
- TS_FAIL("testLoadFromPnor> Failed to Load Pnor Section %s",
- PNOR::SectionIdToString(secId));
errlCommit(l_errl, RUNTIME_COMP_ID);
+ TS_FAIL("testLoadFromPnor> Failed to Load Pnor Section %s",
+ PNOR::SectionIdToString(secIdPair.first));
break;
}
}
OpenPOWER on IntegriCloud