summaryrefslogtreecommitdiffstats
path: root/src/ssx/pgp/pgp_centaur.c
diff options
context:
space:
mode:
authorGuillermo J Silva <guilsilv@us.ibm.com>2015-03-12 10:44:30 -0500
committerStephan Broyles <sbroyles@us.ibm.com>2015-03-13 12:01:35 -0500
commitf157786b99c6d9cde22b7d362f482acb911f3d56 (patch)
tree9e4dcaecdbcc1c5300a7b42d608c06c935b6d518 /src/ssx/pgp/pgp_centaur.c
parentcc8376d863afd715ea13346d5841610a9fad1bd2 (diff)
downloadtalos-occ-f157786b99c6d9cde22b7d362f482acb911f3d56.tar.gz
talos-occ-f157786b99c6d9cde22b7d362f482acb911f3d56.zip
Fixes for extra DIMM callout during channel checkstop
Added a new function that checks if a given Centaur has a channel checkstop. This function can be used during error scenarios in data collection from Centaurs and DIMMs. Change-Id: I77c725064cad8bf27cedff550215bfcd48972511 CQ: SW279249 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/16319 Reviewed-by: Stephan Broyles <sbroyles@us.ibm.com> Tested-by: Stephan Broyles <sbroyles@us.ibm.com>
Diffstat (limited to 'src/ssx/pgp/pgp_centaur.c')
-rw-r--r--src/ssx/pgp/pgp_centaur.c49
1 files changed, 48 insertions, 1 deletions
diff --git a/src/ssx/pgp/pgp_centaur.c b/src/ssx/pgp/pgp_centaur.c
index a47600a..85a0dd3 100644
--- a/src/ssx/pgp/pgp_centaur.c
+++ b/src/ssx/pgp/pgp_centaur.c
@@ -1,4 +1,28 @@
-// $Id: pgp_centaur.c,v 1.2 2013/12/13 23:01:15 bcbrock Exp $
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/ssx/pgp/pgp_centaur.c $ */
+/* */
+/* OpenPOWER OnChipController Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2014,2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+// $Id: pgp_centaur.c,v 1.6 2015/01/27 17:56:26 daviddu Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ssx/pgp/pgp_centaur.c,v $
//-----------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2013
@@ -103,6 +127,7 @@ _centaur_configuration_create(int i_bar, int i_slave, int i_setup)
int i, designatedSync, diffInit;
int64_t rc; /* Must be copied to global struct. */
mcfgpr_t mcfgpr;
+ mcifir_t mcifir;
mcsmode0_t mcsmode0;
pba_slvctln_t slvctl;
uint64_t diffMask, addrAccum, bar, mask, base;
@@ -162,6 +187,28 @@ _centaur_configuration_create(int i_bar, int i_slave, int i_setup)
for (i = 0; i < PGP_NCENTAUR; i++) {
+ // SW273928: New function added for FW820, when centaur has channel
+ // checkstop, we consider centaur is not usable so treat it as
+ // deconfigured. Note that the current implementation assumes when
+ // centaur is dead, its mcs is also dead, which is wrong. However,
+ // it only concerns when MCS happens to be the SYNC master because
+ // the gpe procedure only tries to talk to centaurs regardless what
+ // MCS status it knows about. In this particular case,
+ // the procedure will turn on SYNC on a different MCS with
+ // valid centaur. According to Eric Retter, it would be ok for
+ // HW to have more MCS turned on as SYNC master as long as FW
+ // only send SYNC command to one of them.
+
+ rc = _getscom(MCS_ADDRESS(MCIFIR, i), &(mcifir.value),
+ SCOM_TIMEOUT);
+ if (rc) {
+ rc = 0;
+ config.baseAddress[i] = 0;
+ continue;
+ }
+
+ if (mcifir.fields.channel_fail_signal_active) continue;
+
rc = _getscom(MCS_ADDRESS(MCFGPR, i), &(mcfgpr.value),
SCOM_TIMEOUT);
if (rc) {
OpenPOWER on IntegriCloud