summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/core_activate/core_activate.C
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2013-10-22 15:10:18 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-11-07 14:49:45 -0600
commit2d6ab3cf820134bd3086139adea76f51bbdceb64 (patch)
tree85111c6a6b313bfa5044e3e45ba9fb9df5890bc6 /src/usr/hwpf/hwp/core_activate/core_activate.C
parent7c27703341d61f28b204254ad96c3fea5840bb73 (diff)
downloadtalos-hostboot-2d6ab3cf820134bd3086139adea76f51bbdceb64.tar.gz
talos-hostboot-2d6ab3cf820134bd3086139adea76f51bbdceb64.zip
Handle winkle-wakeup times in slave cores.
Change-Id: I6978d66ecfdef57da9754e6251d2ac1d3d078210 RTC: 73559 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/6851 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/core_activate/core_activate.C')
-rw-r--r--src/usr/hwpf/hwp/core_activate/core_activate.C33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/usr/hwpf/hwp/core_activate/core_activate.C b/src/usr/hwpf/hwp/core_activate/core_activate.C
index d3433f3f4..36ab41cf5 100644
--- a/src/usr/hwpf/hwp/core_activate/core_activate.C
+++ b/src/usr/hwpf/hwp/core_activate/core_activate.C
@@ -45,6 +45,8 @@
#include <hwpisteperror.H>
#include <errl/errludtarget.H>
+#include <intr/interrupt.H>
+
// targeting support
#include <targeting/common/commontargeting.H>
#include <targeting/common/utilFilter.H>
@@ -103,7 +105,7 @@ void* call_host_activate_master( void *io_pArgs )
const TARGETING::Target* l_masterCore = getMasterCore( );
assert( l_masterCore != NULL );
-
+
TARGETING::Target* l_cpu_target = const_cast<TARGETING::Target *>
( getParentChip( l_masterCore ) );
@@ -114,7 +116,7 @@ void* call_host_activate_master( void *io_pArgs )
// Pass in Master EX target
const TARGETING::Target* l_masterEx = getExChiplet(l_masterCore);
assert(l_masterEx != NULL );
-
+
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_host_activate_master: call proc_prep_master_winkle. "
"Target HUID %.8X",
@@ -280,9 +282,7 @@ void* call_host_activate_slave_cores( void *io_pArgs )
assert( sys != NULL );
uint64_t en_threads = sys->getAttr<ATTR_ENABLED_THREADS>();
- uint64_t pir = l_coreId << 3;
- pir |= l_chipId << 7;
- pir |= l_logicalNodeId << 10;
+ uint64_t pir = INTR::PIR_t(l_logicalNodeId, l_chipId, l_coreId).word;
if (pir != l_masterCoreID)
{
@@ -292,11 +292,7 @@ void* call_host_activate_slave_cores( void *io_pArgs )
int rc = cpu_start_core(pir,en_threads);
- // We purposefully only create one error log here. The only
- // failure from the kernel is a bad PIR, which means we have
- // a pervasive attribute problem of some sort. Just log the
- // first failing PIR.
- if ((0 != rc) && (NULL == l_errl))
+ if (0 != rc)
{
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"call_host_activate_slave_cores: "
@@ -313,12 +309,27 @@ void* call_host_activate_slave_cores( void *io_pArgs )
*
* @devdesc Kernel returned error when trying to activate core.
*/
- l_errl =
+ errlHndl_t l_tmperrl =
new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE,
ISTEP_HOST_ACTIVATE_SLAVE_CORES,
ISTEP_BAD_RC,
pir,
rc );
+
+ // Callout core that failed to wake up.
+ l_tmperrl->addHwCallout(*l_core,
+ HWAS::SRCI_PRIORITY_MED,
+ HWAS::DECONFIG,
+ HWAS::GARD_Predictive);
+
+ if (NULL == l_errl)
+ {
+ l_errl = l_tmperrl;
+ }
+ else
+ {
+ errlCommit( l_tmperrl, HWPF_COMP_ID );
+ }
}
}
}
OpenPOWER on IntegriCloud