summaryrefslogtreecommitdiffstats
path: root/src/usr/targeting
diff options
context:
space:
mode:
authorChristian Geddes <crgeddes@us.ibm.com>2019-07-15 11:02:27 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2020-01-22 09:45:00 -0600
commitf32aff51f83dcbcaa3857100c6e4e36ee7a8b84a (patch)
tree8ae056af16db181e933eaedc2fd74adedd049a40 /src/usr/targeting
parent5820710976565a6b3d241bce91d97d3fdacd0396 (diff)
downloadblackbird-hostboot-f32aff51f83dcbcaa3857100c6e4e36ee7a8b84a.tar.gz
blackbird-hostboot-f32aff51f83dcbcaa3857100c6e4e36ee7a8b84a.zip
Make RT_TARG id generation code common between IPL time and runtime
For axone we are writing the OMI mmio bars into hdat so the hypervisor know how to talk to the devices. IPL code needs to be able to lookup the hbrt-style ids so we can use them to make hdat entries that the hypervisor will be able to associate targets with. This commit also move rt_targeting.H to the correct include directory and updates everywhere that it is included. Change-Id: I31deaa1a9c5a7523622a8b3b12ad459e2b2feed3 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/80419 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: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/targeting')
-rw-r--r--src/usr/targeting/common/common.mk3
-rw-r--r--src/usr/targeting/common/hbrt_target.C101
-rw-r--r--src/usr/targeting/hostboot_common.mk5
-rw-r--r--src/usr/targeting/makefile2
-rw-r--r--src/usr/targeting/runtime/attrPlatOverride_rt.C2
-rw-r--r--src/usr/targeting/runtime/makefile2
-rw-r--r--src/usr/targeting/runtime/rt_startup.C4
-rw-r--r--src/usr/targeting/runtime/rt_targeting.C59
-rw-r--r--src/usr/targeting/runtime/test/testtargeting.H8
9 files changed, 117 insertions, 69 deletions
diff --git a/src/usr/targeting/common/common.mk b/src/usr/targeting/common/common.mk
index 5c357f111..951aa8663 100644
--- a/src/usr/targeting/common/common.mk
+++ b/src/usr/targeting/common/common.mk
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2011,2018
+# Contributors Listed Below - COPYRIGHT 2011,2020
# [+] International Business Machines Corp.
#
#
@@ -64,4 +64,3 @@ COMMON_TARGETING_OBJS += ${TARGET_OBJS}
COMMON_TARGETING_OBJS += ${PREDICATES_OBJS}
COMMON_TARGETING_OBJS += ${ITERATORS_OBJS}
COMMON_TARGETING_OBJS += ${OTHER_OBJS}
-
diff --git a/src/usr/targeting/common/hbrt_target.C b/src/usr/targeting/common/hbrt_target.C
new file mode 100644
index 000000000..b91979922
--- /dev/null
+++ b/src/usr/targeting/common/hbrt_target.C
@@ -0,0 +1,101 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/targeting/common/hbrt_target.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2019,2020 */
+/* [+] 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 <targeting/common/hbrt_target.H>
+#include <targeting/common/targetservice.H>
+#include <targeting/common/targreasoncodes.H>
+#include <runtime/customize_attrs_for_payload.H>
+#include <targeting/common/trace.H>
+#ifdef __HOSTBOOT_MODULE
+#include <errl/errludtarget.H>
+#endif
+
+extern trace_desc_t* g_trac_hbrt;
+using namespace TARGETING;
+
+namespace TARGETING
+{
+
+errlHndl_t getRtTarget(
+ const TARGETING::Target* i_pTarget,
+ rtChipId_t& o_rtTargetId)
+{
+ errlHndl_t pError = NULL;
+
+ do
+ {
+ if(i_pTarget == TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL)
+ {
+ TARGETING::Target* masterProcChip = NULL;
+ TARGETING::targetService().
+ masterProcChipTargetHandle(masterProcChip);
+ i_pTarget = masterProcChip;
+ }
+
+ auto hbrtHypId = RUNTIME::HBRT_HYP_ID_UNKNOWN;
+ if( (!i_pTarget->tryGetAttr<TARGETING::ATTR_HBRT_HYP_ID>(hbrtHypId))
+ || (hbrtHypId == RUNTIME::HBRT_HYP_ID_UNKNOWN))
+ {
+ auto huid = get_huid(i_pTarget);
+ auto targetingTargetType =
+ i_pTarget->getAttr<TARGETING::ATTR_TYPE>();
+ TRACFCOMP(g_trac_targeting, ERR_MRK
+ "Targeting target type of 0x%08X not supported. "
+ "HUID: 0x%08X",
+ targetingTargetType,
+ huid);
+ /*@
+ * @errortype
+ * @moduleid TARG_RT_GET_RT_TARGET
+ * @reasoncode TARG_RT_TARGET_TYPE_NOT_SUPPORTED
+ * @userdata1 Target's HUID
+ * @userdata2 target's targeting type
+ * @devdesc Targeting target's type not supported by runtime
+ * code
+ */
+ pError = new ERRORLOG::ErrlEntry(
+ ERRORLOG::ERRL_SEV_INFORMATIONAL,
+ TARGETING::TARG_RT_GET_RT_TARGET,
+ TARGETING::TARG_RT_TARGET_TYPE_NOT_SUPPORTED,
+ huid,
+ targetingTargetType
+#ifdef __HOSTBOOT_MODULE
+ ,true);
+
+ ERRORLOG::ErrlUserDetailsTarget(i_pTarget,"Targeting Target").
+ addToLog(pError);
+#else
+ ); // if not in hostboot code then skip last param of error log
+ // and do not create a user details section
+#endif
+ }
+
+ o_rtTargetId = hbrtHypId;
+
+ } while(0);
+
+ return pError;
+}
+
+} \ No newline at end of file
diff --git a/src/usr/targeting/hostboot_common.mk b/src/usr/targeting/hostboot_common.mk
index 7be1449d7..4d10df929 100644
--- a/src/usr/targeting/hostboot_common.mk
+++ b/src/usr/targeting/hostboot_common.mk
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2013,2016
+# Contributors Listed Below - COPYRIGHT 2013,2020
# [+] International Business Machines Corp.
#
#
@@ -30,6 +30,9 @@ COMMON_TARGETING_MAKEFILE = ${COMMON_TARGETING_REL_PATH}/common.mk
include ${COMMON_TARGETING_MAKEFILE}
+# TODO: 248022 move this to common.mk when CMVC files are updated for fips
+TARGET_OBJS += hbrt_target.o
+
VPATH += ${TARGETING_REL_PATH}/adapters
VPATH += ${COMMON_TARGETING_REL_PATH}
VPATH += ${addprefix ${COMMON_TARGETING_REL_PATH}/, ${COMMON_TARGETING_SUBDIRS}}
diff --git a/src/usr/targeting/makefile b/src/usr/targeting/makefile
index 56f29e51d..af1978f64 100644
--- a/src/usr/targeting/makefile
+++ b/src/usr/targeting/makefile
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2011,2019
+# Contributors Listed Below - COPYRIGHT 2011,2020
# [+] International Business Machines Corp.
#
#
diff --git a/src/usr/targeting/runtime/attrPlatOverride_rt.C b/src/usr/targeting/runtime/attrPlatOverride_rt.C
index 752fa740a..3c805381c 100644
--- a/src/usr/targeting/runtime/attrPlatOverride_rt.C
+++ b/src/usr/targeting/runtime/attrPlatOverride_rt.C
@@ -24,7 +24,7 @@
/* IBM_PROLOG_END_TAG */
#include <runtime/interface.h>
-#include <runtime/rt_targeting.H>
+#include <targeting/runtime/rt_targeting.H>
#include <targeting/common/commontargeting.H>
#include <targeting/attrPlatOverride.H>
#include <fapi2/plat_attr_override_sync.H>
diff --git a/src/usr/targeting/runtime/makefile b/src/usr/targeting/runtime/makefile
index 9d872cef7..eb1dd366e 100644
--- a/src/usr/targeting/runtime/makefile
+++ b/src/usr/targeting/runtime/makefile
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2013,2019
+# Contributors Listed Below - COPYRIGHT 2013,2020
# [+] International Business Machines Corp.
#
#
diff --git a/src/usr/targeting/runtime/rt_startup.C b/src/usr/targeting/runtime/rt_startup.C
index 578750006..ed190f196 100644
--- a/src/usr/targeting/runtime/rt_startup.C
+++ b/src/usr/targeting/runtime/rt_startup.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2018 */
+/* Contributors Listed Below - COPYRIGHT 2018,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -22,7 +22,7 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
-#include <runtime/rt_targeting.H>
+#include <targeting/runtime/rt_targeting.H>
#include <runtime/interface.h>
#include <targeting/common/target.H>
#include <targeting/common/targetservice.H>
diff --git a/src/usr/targeting/runtime/rt_targeting.C b/src/usr/targeting/runtime/rt_targeting.C
index 581386985..28c1fdf7d 100644
--- a/src/usr/targeting/runtime/rt_targeting.C
+++ b/src/usr/targeting/runtime/rt_targeting.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2014,2018 */
+/* Contributors Listed Below - COPYRIGHT 2014,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -39,7 +39,7 @@
#include <targeting/attrrp.H>
#include <arch/pirformat.H>
#include <runtime/customize_attrs_for_payload.H>
-#include <runtime/rt_targeting.H>
+#include <targeting/runtime/rt_targeting.H>
#include <runtime/interface.h>
#include <map>
#include <util/memoize.H>
@@ -54,61 +54,6 @@ using namespace TARGETING;
namespace RT_TARG
{
-errlHndl_t getRtTarget(
- const TARGETING::Target* i_pTarget,
- rtChipId_t& o_rtTargetId)
-{
- errlHndl_t pError = NULL;
-
- do
- {
- if(i_pTarget == TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL)
- {
- TARGETING::Target* masterProcChip = NULL;
- TARGETING::targetService().
- masterProcChipTargetHandle(masterProcChip);
- i_pTarget = masterProcChip;
- }
-
- auto hbrtHypId = RUNTIME::HBRT_HYP_ID_UNKNOWN;
- if( (!i_pTarget->tryGetAttr<TARGETING::ATTR_HBRT_HYP_ID>(hbrtHypId))
- || (hbrtHypId == RUNTIME::HBRT_HYP_ID_UNKNOWN))
- {
- auto huid = get_huid(i_pTarget);
- auto targetingTargetType =
- i_pTarget->getAttr<TARGETING::ATTR_TYPE>();
- TRACFCOMP(g_trac_targeting, ERR_MRK
- "Targeting target type of 0x%08X not supported. "
- "HUID: 0x%08X",
- targetingTargetType,
- huid);
- /*@
- * @errortype
- * @moduleid TARG_RT_GET_RT_TARGET
- * @reasoncode TARG_RT_TARGET_TYPE_NOT_SUPPORTED
- * @userdata1 Target's HUID
- * @userdata2 target's targeting type
- * @devdesc Targeting target's type not supported by runtime
- * code
- */
- pError = new ERRORLOG::ErrlEntry(
- ERRORLOG::ERRL_SEV_INFORMATIONAL,
- TARGETING::TARG_RT_GET_RT_TARGET,
- TARGETING::TARG_RT_TARGET_TYPE_NOT_SUPPORTED,
- huid,
- targetingTargetType,
- true);
-
- ERRORLOG::ErrlUserDetailsTarget(i_pTarget,"Targeting Target").
- addToLog(pError);
- }
-
- o_rtTargetId = hbrtHypId;
-
- } while(0);
-
- return pError;
-}
/**
* @brief API documentation same as for getHbTarget; this just implements the
diff --git a/src/usr/targeting/runtime/test/testtargeting.H b/src/usr/targeting/runtime/test/testtargeting.H
index 5dbd3f15e..c6c7c0d60 100644
--- a/src/usr/targeting/runtime/test/testtargeting.H
+++ b/src/usr/targeting/runtime/test/testtargeting.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2019 */
+/* Contributors Listed Below - COPYRIGHT 2013,2020 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -25,7 +25,7 @@
#include <cxxtest/TestSuite.H>
#include <targeting/common/commontargeting.H>
#include <runtime/interface.h>
-#include <runtime/rt_targeting.H>
+#include <targeting/runtime/rt_targeting.H>
#include <errl/errlentry.H>
#include <errl/errlmanager.H>
#include <targeting/common/trace.H>
@@ -62,7 +62,7 @@ class TargetingTestSuite : public CxxTest::TestSuite
{
using namespace TARGETING;
errlHndl_t err = NULL;
- RT_TARG::rtChipId_t rt_chipid;
+ TARGETING::rtChipId_t rt_chipid;
TARGETING::TargetHandleList allTargets;
TARGETING::TargetHandleList targetList;
@@ -91,7 +91,7 @@ class TargetingTestSuite : public CxxTest::TestSuite
for(TargetHandleList::iterator pTarg = allTargets.begin();
pTarg != allTargets.end(); ++pTarg)
{
- err = RT_TARG::getRtTarget(*pTarg, rt_chipid);
+ err = TARGETING::getRtTarget(*pTarg, rt_chipid);
if( err )
{
TS_FAIL("getRtTarget returned error log");
OpenPOWER on IntegriCloud