summaryrefslogtreecommitdiffstats
path: root/src/occ_gpe0/firdata/scom_util.c
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2017-10-21 13:49:55 -0500
committerMartha Broyles <mbroyles@us.ibm.com>2017-10-24 09:23:00 -0400
commit20879cb32111afd06cc7db6ea1fd0aaf3ef32ee6 (patch)
treeebb1694ca2d874fc8ec4a46322cffb41c518ffb1 /src/occ_gpe0/firdata/scom_util.c
parent6404302e1b1eae001edcec4a5c8e4c4ce5cdaaa3 (diff)
downloadtalos-occ-20879cb32111afd06cc7db6ea1fd0aaf3ef32ee6.tar.gz
talos-occ-20879cb32111afd06cc7db6ea1fd0aaf3ef32ee6.zip
FIRDATA: isolation issues due to SCOM errors from 0x50040018
The first change is to reset the SBE FIFO after SCOM failures on slave processors. This ensures the FIFO is realigned for subsequent SCOMs. The second change is to ignore chiplet offline SCOM errors from 0x50040018 on master processors. These are expected if a core is asleep at the time of the checkstop. The data returned from the SCOM will still show active attentions from chiplets that are online. This commit does not fix chiplet offline SCOM errors from 0x50040018 on slave processors. That will come later in another commit. Change-Id: Ie60329efed169c9f4afa94154fd86fe466384609 CQ: SW404945 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/48666 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: William A. Bryan <wilbryan@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Reviewed-by: Martha Broyles <mbroyles@us.ibm.com>
Diffstat (limited to 'src/occ_gpe0/firdata/scom_util.c')
-rw-r--r--src/occ_gpe0/firdata/scom_util.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/occ_gpe0/firdata/scom_util.c b/src/occ_gpe0/firdata/scom_util.c
index 3f14acb..ed806cb 100644
--- a/src/occ_gpe0/firdata/scom_util.c
+++ b/src/occ_gpe0/firdata/scom_util.c
@@ -361,11 +361,21 @@ int32_t SCOM_getScom( SCOM_Trgt_t i_trgt, uint32_t i_addr, uint64_t * o_val )
//Use SBE FIFO if it's a slave proc
if(!chip_targ.isMaster)
{
- return getFifoScom(&chip_targ, trans_addr, o_val);
+ rc = getFifoScom(&chip_targ, trans_addr, o_val);
}
else
{
rc = getscom_abs(trans_addr, o_val);
+
+ // Add exception for chiplet offline errors on the UNIT_CS or
+ // HOST_ATTN broadcast registers. The value returned will still be
+ // valid. Even though one or more of the chiplets may have been
+ // offline.
+ if ( 2 == rc &&
+ (0x50040018 == i_addr || 0x50040009 == i_addr) )
+ {
+ rc = SUCCESS;
+ }
}
}
OpenPOWER on IntegriCloud