summaryrefslogtreecommitdiffstats
path: root/src/usr/targeting/common
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/common
parent5820710976565a6b3d241bce91d97d3fdacd0396 (diff)
downloadtalos-hostboot-f32aff51f83dcbcaa3857100c6e4e36ee7a8b84a.tar.gz
talos-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/common')
-rw-r--r--src/usr/targeting/common/common.mk3
-rw-r--r--src/usr/targeting/common/hbrt_target.C101
2 files changed, 102 insertions, 2 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
OpenPOWER on IntegriCloud