summaryrefslogtreecommitdiffstats
path: root/src/kernel/cpumgr.C
diff options
context:
space:
mode:
authorAdam Muhle <armuhle@us.ibm.com>2013-01-23 08:53:04 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-02-04 13:24:10 -0600
commit6ba9a7790919fc430ddf1539579fdb4e9e7bba0d (patch)
tree488d0567844c4904110873531d833a0c5398fb33 /src/kernel/cpumgr.C
parent68286500750647b14ec5cbbe0253bafef2fdf341 (diff)
downloadtalos-hostboot-6ba9a7790919fc430ddf1539579fdb4e9e7bba0d.tar.gz
talos-hostboot-6ba9a7790919fc430ddf1539579fdb4e9e7bba0d.zip
Triggering Hostboot Shutdown when PNOR is bad
Updating the doShutdown path to support receiving a reason code as input. Then changing PNOR RP to issue a shutdown when problems are detected with the PNOR Partition table. RTC: 44146 Change-Id: Ib4111d0a91f53d90fa100422a1463539897598e6 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3024 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/kernel/cpumgr.C')
-rw-r--r--src/kernel/cpumgr.C16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/kernel/cpumgr.C b/src/kernel/cpumgr.C
index 6e6b59860..954232b2d 100644
--- a/src/kernel/cpumgr.C
+++ b/src/kernel/cpumgr.C
@@ -111,11 +111,21 @@ void CpuManager::requestShutdown(uint64_t i_status)
cv_shutdown_requested = true;
// If the shutdown was not called with a Good shutdown status
- // then we know we are shutting down due to error and the
- // status passed back is instead a PLID
+ // then we know we are shutting down due to error. We need to
+ // figure out if the error provided is a PLID or reasoncode
+ // and write it appropriately.
+ // Hostboot PLIDs always start with 0x9 (32-bit)
+ static const uint64_t PLID_MASK = 0x0000000090000000;
if (i_status != SHUTDOWN_STATUS_GOOD)
{
- termWritePlid(TI_SHUTDOWN, i_status);
+ if ((i_status & 0x00000000F0000000) == PLID_MASK)
+ {
+ termWritePlid(TI_SHUTDOWN, i_status);
+ }
+ else
+ {
+ termWriteSRC(TI_SHUTDOWN,i_status, 0);
+ }
printk("TI initiated on all threads (shutdown)\n");
}
OpenPOWER on IntegriCloud