summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/utility_procedures/mss_unmask_errors.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/hwpf/hwp/utility_procedures/mss_unmask_errors.C')
-rw-r--r--src/usr/hwpf/hwp/utility_procedures/mss_unmask_errors.C74
1 files changed, 46 insertions, 28 deletions
diff --git a/src/usr/hwpf/hwp/utility_procedures/mss_unmask_errors.C b/src/usr/hwpf/hwp/utility_procedures/mss_unmask_errors.C
index 994650b30..12f15df6f 100644
--- a/src/usr/hwpf/hwp/utility_procedures/mss_unmask_errors.C
+++ b/src/usr/hwpf/hwp/utility_procedures/mss_unmask_errors.C
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: mss_unmask_errors.C,v 1.3 2013/03/08 22:03:00 gollub Exp $
+// $Id: mss_unmask_errors.C,v 1.4 2013/10/22 18:55:06 gollub Exp $
//------------------------------------------------------------------------------
// Don't forget to create CVS comments when you check in your changes!
//------------------------------------------------------------------------------
@@ -34,6 +34,8 @@
// | | | so they will be masked during memdiags, and
// | | | unmasked before scrub is started.
// 1.3 | 03/08/13 | gollub | Masking MBSPA[0] for DD1, and using MBSPA[8] instead.
+// 1.4 | 10/22/13 | gollub | Keep maint ECC errors masked, since PRD intends
+// | | | to use cmd complete attention instead.
//------------------------------------------------------------------------------
// Includes
@@ -1707,28 +1709,32 @@ fapi::ReturnCode mss_unmask_maint_errors(const fapi::Target & i_target,
// on when cmd stops on error, but can't be set to do both.
l_ecmd_rc |= l_mbaspa_mask.setBit(0);
- // 1 Hard_CE_ETE_Attn mask (until after memdiags)
- // NOTE: FW memdiags needs this masked because they want to wait till
- // cmd gets to end of rank before getting any attention.
+ // 1 Hard_CE_ETE_Attn mask (forever)
+ // NOTE: FW wants to mask these and rely instead on detecting the
+ // cmd complete attention, then checking these manually to see if
+ // they cause the cmd to stop
// NOTE: Hards counted during super fast read, but can't be called
// true hard CEs since super fast read doesn't write back and read again.
l_ecmd_rc |= l_mbaspa_mask.setBit(1);
- // 2 Soft_CE_ETE_Attn mask (until after memdiags)
- // NOTE: FW memdiags needs this masked because they want to wait till
- // cmd gets to end of rank before getting any attention.
+ // 2 Soft_CE_ETE_Attn mask (forever)
+ // NOTE: FW wants to mask these and rely instead on detecting the
+ // cmd complete attention, then checking these manually to see if
+ // they cause the cmd to stop
// NOTE: Softs not counted during super fast read.
l_ecmd_rc |= l_mbaspa_mask.setBit(2);
- // 3 Intermittent_ETE_Attn mask (until after memdiags)
- // NOTE: FW memdiags needs this masked because they want to wait till
- // cmd gets to end of rank before getting any attention.
+ // 3 Intermittent_ETE_Attn mask (forever)
+ // NOTE: FW wants to mask these and rely instead on detecting the
+ // cmd complete attention, then checking these manually to see if
+ // they cause the cmd to stop
// NOTE: Intermittents not counted during super fast read.
l_ecmd_rc |= l_mbaspa_mask.setBit(3);
- // 4 RCE_ETE_Attn mask (until after memdiags)
- // NOTE: FW memdiags needs this masked because they want to wait till
- // cmd gets to end of rank before getting any attention.
+ // 4 RCE_ETE_Attn mask (forever)
+ // NOTE: FW wants to mask these and rely instead on detecting the
+ // cmd complete attention, then checking these manually to see if
+ // they cause the cmd to stop
// NOTE: RCEs not counted during super fast read.
l_ecmd_rc |= l_mbaspa_mask.setBit(4);
@@ -1865,9 +1871,10 @@ fapi::ReturnCode mss_unmask_maint_errors(const fapi::Target & i_target,
l_ecmd_rc |= l_mbeccfir_action1.setBit(19);
l_ecmd_rc |= l_mbeccfir_mask_or.setBit(19);
- // 20:27 Maint MPE Rank 0:7 recoverable mask (until after memdiags)
- // NOTE: FW memdiags needs this masked because they want to wait till
- // cmd gets to end of rank before getting any attention.
+ // 20:27 Maint MPE Rank 0:7 recoverable mask (forever)
+ // NOTE: FW wants to mask these and rely instead on detecting the
+ // cmd complete attention, then checking these manually to see if
+ // they cause the cmd to stop
l_ecmd_rc |= l_mbeccfir_action0.clearBit(20,8);
l_ecmd_rc |= l_mbeccfir_action1.setBit(20,8);
l_ecmd_rc |= l_mbeccfir_mask_or.setBit(20,8);
@@ -1906,9 +1913,10 @@ fapi::ReturnCode mss_unmask_maint_errors(const fapi::Target & i_target,
l_ecmd_rc |= l_mbeccfir_action1.setBit(40);
l_ecmd_rc |= l_mbeccfir_mask_or.setBit(40);
- // 41 Maintenance UE recoverable mask (until after memdiags)
- // NOTE: FW memdiags needs this masked because they want to wait till
- // cmd gets to end of rank before getting any attention.
+ // 41 Maintenance UE recoverable mask (forever)
+ // NOTE: FW wants to mask these and rely instead on detecting the
+ // cmd complete attention, then checking these manually to see if
+ // they cause the cmd to stop
l_ecmd_rc |= l_mbeccfir_action0.clearBit(41);
l_ecmd_rc |= l_mbeccfir_action1.setBit(41);
l_ecmd_rc |= l_mbeccfir_mask_or.setBit(41);
@@ -1954,12 +1962,12 @@ fapi::ReturnCode mss_unmask_maint_errors(const fapi::Target & i_target,
l_ecmd_rc |= l_mbeccfir_action1.clearBit(49);
l_ecmd_rc |= l_mbeccfir_mask_and.clearBit(49);
- // 50 internal scom error recovereble mask (tbd)
+ // 50 internal scom error recovereble mask
l_ecmd_rc |= l_mbeccfir_action0.clearBit(50);
l_ecmd_rc |= l_mbeccfir_action1.setBit(50);
l_ecmd_rc |= l_mbeccfir_mask_or.setBit(50);
- // 51 internal scom error clone recovereble mask (tbd)
+ // 51 internal scom error clone recovereble mask
l_ecmd_rc |= l_mbeccfir_action0.clearBit(51);
l_ecmd_rc |= l_mbeccfir_action1.setBit(51);
l_ecmd_rc |= l_mbeccfir_mask_or.setBit(51);
@@ -2479,7 +2487,7 @@ fapi::ReturnCode mss_unmask_fetch_errors(const fapi::Target & i_target,
ecmdDataBufferBase l_mbeccfir_mask(64);
ecmdDataBufferBase l_mbeccfir_mask_and(64);
- ecmdDataBufferBase l_mbaspa_mask(64);
+ //ecmdDataBufferBase l_mbaspa_mask(64);
// Get associated functional MBAs on this centaur
l_rc = fapiGetChildChiplets(i_target,
@@ -2508,12 +2516,16 @@ fapi::ReturnCode mss_unmask_fetch_errors(const fapi::Target & i_target,
}
+ // NOTE: FW wants to mask these and rely instead on detecting the
+ // cmd complete attention, then checking these manually to see if
+ // they cause the cmd to stop
+
//*************************
//*************************
// MBASPA
//*************************
//*************************
-
+ /*
// Read mask
l_rc = fapiGetScom_w_retry(l_mbaChiplets[i],
MBA01_MBSPAMSKQ_0x03010614,
@@ -2529,8 +2541,8 @@ fapi::ReturnCode mss_unmask_fetch_errors(const fapi::Target & i_target,
// them. But typically we are expecting the bit set at this point
// to be valid errors for PRD to log.
-
- // 1 Hard_CE_ETE_Attn unmask
+
+ // 1 Hard_CE_ETE_Attn unmask
// NOTE: Unmasking, but PRD responsible for setting and enabling the threshold.
l_ecmd_rc |= l_mbaspa_mask.clearBit(1);
@@ -2545,7 +2557,6 @@ fapi::ReturnCode mss_unmask_fetch_errors(const fapi::Target & i_target,
// 4 RCE_ETE_Attn unmask
// NOTE: Unmasking, but PRD responsible for setting and enabling the threshold.
l_ecmd_rc |= l_mbaspa_mask.clearBit(4);
-
if(l_ecmd_rc)
{
@@ -2566,9 +2577,10 @@ fapi::ReturnCode mss_unmask_fetch_errors(const fapi::Target & i_target,
if (i_bad_rc) fapiLogError(i_bad_rc);
return l_rc;
}
-
+ */
//************************************************
// DEBUG: read them all back to verify
+ /*
l_rc = fapiGetScom_w_retry(l_mbaChiplets[i],
MBA01_MBSPAMSKQ_0x03010614,
l_mbaspa_mask);
@@ -2578,8 +2590,9 @@ fapi::ReturnCode mss_unmask_fetch_errors(const fapi::Target & i_target,
if (i_bad_rc) fapiLogError(i_bad_rc);
return l_rc;
}
+ */
//************************************************
-
+
//*************************
@@ -2627,11 +2640,16 @@ fapi::ReturnCode mss_unmask_fetch_errors(const fapi::Target & i_target,
// 19 Memory UE recoverable unmask
l_ecmd_rc |= l_mbeccfir_mask_and.clearBit(19);
+ // NOTE: FW wants to mask these and rely instead on detecting the
+ // cmd complete attention, then checking these manually to see if
+ // they cause the cmd to stop
+ /*
// 20:27 Maint MPE Rank 0:7 recoverable unmask
l_ecmd_rc |= l_mbeccfir_mask_and.clearBit(20,8);
// 41 Maintenance UE recoverable unmask
l_ecmd_rc |= l_mbeccfir_mask_and.clearBit(41);
+ */
// 43 Prefetch Memory UE recoverable unmask
l_ecmd_rc |= l_mbeccfir_mask_and.clearBit(43);
OpenPOWER on IntegriCloud