summaryrefslogtreecommitdiffstats
path: root/src/usr/xscom
diff options
context:
space:
mode:
authorDoug Gilbert <dgilbert@us.ibm.com>2014-03-06 14:31:57 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-03-20 14:47:01 -0500
commit6c6ededed27870f024c4e46fecfcdd2b477d30ee (patch)
treeb33320cf16a12f30e5158733ff5ce92a7a7fe01d /src/usr/xscom
parentc753ba81874b631e12d42ea70dafb7ffa9a2b253 (diff)
downloadtalos-hostboot-6c6ededed27870f024c4e46fecfcdd2b477d30ee.tar.gz
talos-hostboot-6c6ededed27870f024c4e46fecfcdd2b477d30ee.zip
HBRT fapi wakeup support
RTC: 98665 Change-Id: Ib9e9f8f3656989975cc08a29304ba7faa25c59e4 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9364 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/xscom')
-rw-r--r--src/usr/xscom/runtime/rt_xscom.C145
1 files changed, 4 insertions, 141 deletions
diff --git a/src/usr/xscom/runtime/rt_xscom.C b/src/usr/xscom/runtime/rt_xscom.C
index 13c2557ba..a9b74bd14 100644
--- a/src/usr/xscom/runtime/rt_xscom.C
+++ b/src/usr/xscom/runtime/rt_xscom.C
@@ -32,6 +32,7 @@
#include <errl/errludlogregister.H>
#include <runtime/interface.h>
#include <errl/errludtarget.H>
+#include <runtime/rt_targeting.H>
// Trace definition
trace_desc_t* g_trac_xscom = NULL;
@@ -40,14 +41,6 @@ TRAC_INIT(&g_trac_xscom, "XSCOM", 2*KILOBYTE, TRACE::BUFFER_SLOW);
namespace XSCOM
{
-enum
-{
- CHIPID_NODE_SHIFT = 3, // CHIPID is 'NNNCCC'b, shift 3
- MEMBUF_ID_SHIFT = 4, // CHIPID for MEMBUF is 'NNNCCCMMMM'b
- MEMBUF_ID_FLAG = 0x80000000, // MEMBUF chip id has MSbit on
-};
-
-
DEVICE_REGISTER_ROUTE(DeviceFW::WILDCARD,
DeviceFW::XSCOM,
TARGETING::TYPE_PROC,
@@ -69,15 +62,6 @@ DEVICE_REGISTER_ROUTE(DeviceFW::WILDCARD,
TARGETING::TYPE_MEMBUF,
xscomPerformOp);
/**
- * @brief Convert target into chipId that the hypervisor uses
- * @param[in] i_target The HB TARGETING target
- * @param[out] o_chipId Chipid
- * @return errlHndl_t Error handle if there was an error
- */
-errlHndl_t get_rt_target(TARGETING::Target* i_target,
- uint64_t & o_chipId);
-
-/**
* @brief Internal routine that verifies the validity of input parameters
* for an XSCOM access.
*
@@ -160,127 +144,6 @@ errlHndl_t xscomOpSanityCheck(const DeviceFW::OperationType i_opType,
return l_err;
}
-
-errlHndl_t get_rt_target(TARGETING::Target* i_target,
- uint64_t &o_chipId)
-{
- errlHndl_t l_err = NULL;
-
- do
- {
- if(i_target == TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL)
- {
- TARGETING::Target* masterProcChip = NULL;
- TARGETING::targetService().
- masterProcChipTargetHandle(masterProcChip);
-
- i_target = masterProcChip;
- }
-
- uint32_t target_type = i_target->getAttr<TARGETING::ATTR_TYPE>();
-
- if(target_type == TARGETING::TYPE_MEMBUF)
- {
- TARGETING::TargetHandleList targetList;
-
- // need to get assoicated MC for this MEMBUF
- getParentAffinityTargets(targetList,
- i_target,
- TARGETING::CLASS_UNIT,
- TARGETING::TYPE_MCS);
- if( targetList.empty() )
- {
- uint32_t huid = get_huid(i_target);
- TRACFCOMP(g_trac_xscom,ERR_MRK
- "No MSC target found for MEMBUF. MEMBUF huid: %08x",
- huid);
- /*@
- * @errortype
- * @moduleid XSCOM_RT_GET_TARGET
- * @reasoncode XSCOM_RT_NO_MCS_TARGET
- * @userdata1 HUID of MEMBUF target
- * @devdesc No memory controller target found for the
- * given Memory data controller
- */
- l_err =
- new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_INFORMATIONAL,
- XSCOM_RT_GET_TARGET,
- XSCOM_RT_NO_MCS_TARGET,
- huid,
- 0);
-
- l_err->addProcedureCallout(HWAS::EPUB_PRC_HB_CODE,
- HWAS::SRCI_PRIORITY_HIGH);
-
- ERRORLOG::ErrlUserDetailsTarget(i_target,"SCOM Target").
- addToLog(l_err);
-
- break;
- }
-
- TARGETING::Target * mcs_target = targetList[0];
- uint32_t mcpos = mcs_target->getAttr<TARGETING::ATTR_CHIP_UNIT>();
-
- // Get associated proc chip
- targetList.clear();
- getParentAffinityTargets(targetList,
- mcs_target,
- TARGETING::CLASS_CHIP,
- TARGETING::TYPE_PROC);
-
- if(targetList.empty())
- {
- uint32_t huid = get_huid(mcs_target);
- TRACFCOMP(g_trac_xscom,ERR_MRK
- "No proc target found for MSC. MSC huid: %08x",
- huid);
- /*@
- * @errortype
- * @moduleid XSCOM_RT_GET_TARGET
- * @reasoncode XSCOM_RT_NO_PROC_TARGET
- * @userdata1 HUID of the MSC target
- * @devdesc No processor target found for the Memory
- * controller.
- */
- l_err =
- new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_INFORMATIONAL,
- XSCOM_RT_GET_TARGET,
- XSCOM_RT_NO_PROC_TARGET,
- huid,
- 0);
-
- l_err->addProcedureCallout(HWAS::EPUB_PRC_HB_CODE,
- HWAS::SRCI_PRIORITY_HIGH);
-
- ERRORLOG::ErrlUserDetailsTarget(mcs_target,"SCOM Target").
- addToLog(l_err);
-
- break;
- }
-
- TARGETING::Target * proc_target = targetList[0];
- uint32_t fabId =
- proc_target->getAttr<TARGETING::ATTR_FABRIC_NODE_ID>();
- uint32_t procPos =
- proc_target->getAttr<TARGETING::ATTR_FABRIC_CHIP_ID>();
-
- o_chipId = (fabId << CHIPID_NODE_SHIFT) + procPos;
- o_chipId = (o_chipId << MEMBUF_ID_SHIFT) | MEMBUF_ID_FLAG;
- o_chipId += mcpos;
- }
- else // must be proc
- {
- uint32_t fabId = i_target->getAttr<TARGETING::ATTR_FABRIC_NODE_ID>();
- uint32_t procPos = i_target->getAttr<TARGETING::ATTR_FABRIC_CHIP_ID>();
-
- o_chipId = (fabId << CHIPID_NODE_SHIFT) + procPos;
- }
- } while(0);
-
- return l_err;
-}
-
-
/**
* @brief Do the scom operation
*/
@@ -291,11 +154,11 @@ errlHndl_t xScomDoOp(DeviceFW::OperationType i_ioType,
{
errlHndl_t l_err = NULL;
int rc = 0;
- uint64_t proc_id = 0;
+ RT_TARG::rtChipId_t proc_id = 0;
// Convert target to something Sapphire understands
- l_err = get_rt_target(i_target,
- proc_id);
+ l_err = RT_TARG::getRtTarget(i_target,
+ proc_id);
if(l_err)
{
OpenPOWER on IntegriCloud