diff options
author | Elizabeth Liner <eliner@us.ibm.com> | 2015-02-28 22:41:14 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-03-03 02:58:28 -0600 |
commit | 4838314700ec9c9e99a3aa69dc3623b53ef75de9 (patch) | |
tree | 912524be8782235204018aefd784239e25f2e009 /src | |
parent | fd4a8733684acbc94d3398dca362e7c5dc3b7e71 (diff) | |
download | talos-hostboot-4838314700ec9c9e99a3aa69dc3623b53ef75de9.tar.gz talos-hostboot-4838314700ec9c9e99a3aa69dc3623b53ef75de9.zip |
Fixed a bug in the support for core scoms special wakeup in HBRT
Change-Id: Ib2ff8155eacaf50b9c3372e7081eecbde53f7057
RTC:124864
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/16079
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')
-rw-r--r-- | src/usr/scom/scomtrans.C | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/usr/scom/scomtrans.C b/src/usr/scom/scomtrans.C index f9ee8536b..a4a59eca5 100644 --- a/src/usr/scom/scomtrans.C +++ b/src/usr/scom/scomtrans.C @@ -104,6 +104,7 @@ errlHndl_t scomTranslate(DeviceFW::OperationType i_opType, //true => FSP present, false =>OP HBRT bool isFSP_HBRT = INITSERVICE::spBaseServicesEnabled(); + TARGETING::Target* l_target_SW = NULL; #endif // Get the attribute type. TARGETING::TYPE l_type = i_target->getAttr<TARGETING::ATTR_TYPE>(); @@ -130,6 +131,7 @@ errlHndl_t scomTranslate(DeviceFW::OperationType i_opType, //capture the target data in the elog ERRORLOG::ErrlUserDetailsTarget(i_target).addToLog(l_err); } + l_target_SW = i_target; g_wakeupInProgress = false; } #endif @@ -596,20 +598,24 @@ errlHndl_t scomTranslate(DeviceFW::OperationType i_opType, // @todo RTC:124196 need to move this to a more general location so that // the disable occurs after the HBRT is complete. #if __HOSTBOOT_RUNTIME - if(l_type == TARGETING::TYPE_EX && - (i_addr >= l_lowerBound && i_addr < l_upperBound) - && !g_wakeupInProgress && !isFSP_HBRT) + if(l_target_SW != NULL && !g_wakeupInProgress) { g_wakeupInProgress = true; + errlHndl_t l_errSW = NULL; - l_err = handleSpecialWakeup(i_target,false); + l_errSW = handleSpecialWakeup(l_target_SW,false); - if(l_err) + if(l_err != NULL && l_errSW) { TRACFCOMP(g_trac_scom,"Disable p8_cpu_special_wakeup ERROR"); // capture the target data in the elog - ERRORLOG::ErrlUserDetailsTarget(i_target).addToLog(l_err); + ERRORLOG::ErrlUserDetailsTarget(l_target_SW).addToLog(l_errSW); + errlCommit(l_errSW,RUNTIME_COMP_ID); + } + else if(l_errSW) + { + l_err = l_errSW; } g_wakeupInProgress = false; } |