summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/diag/prdf/common')
-rw-r--r--src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule24
-rw-r--r--src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule24
-rw-r--r--src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule21
-rw-r--r--src/usr/diag/prdf/common/plat/p9/p9_xbus.rule22
-rw-r--r--src/usr/diag/prdf/common/plat/p9/p9_xbus_actions.rule9
-rw-r--r--src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C49
6 files changed, 113 insertions, 36 deletions
diff --git a/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule b/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule
index 12c54db9a..0626535ef 100644
--- a/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule
+++ b/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule
@@ -6213,32 +6213,32 @@ group gPBIOEFIR filter singlebit, cs_root_cause( 8, 11, 14 )
/** PBIOEFIR[28]
* parser00 attn or X0evn link down
*/
- (rPBIOEFIR, bit(28)) ? self_th_1;
+ (rPBIOEFIR, bit(28)) ? calloutBusInterface_xbus0_th_1;
/** PBIOEFIR[29]
* parser01 attn or X0odd link down
*/
- (rPBIOEFIR, bit(29)) ? self_th_1;
+ (rPBIOEFIR, bit(29)) ? calloutBusInterface_xbus0_th_1;
/** PBIOEFIR[30]
* parser02 attn or X1evn link down
*/
- (rPBIOEFIR, bit(30)) ? self_th_1;
+ (rPBIOEFIR, bit(30)) ? calloutBusInterface_xbus1_th_1;
/** PBIOEFIR[31]
* parser03 attn or X1odd link down
*/
- (rPBIOEFIR, bit(31)) ? self_th_1;
+ (rPBIOEFIR, bit(31)) ? calloutBusInterface_xbus1_th_1;
/** PBIOEFIR[32]
* parser04 attn or X2evn link down
*/
- (rPBIOEFIR, bit(32)) ? self_th_1;
+ (rPBIOEFIR, bit(32)) ? calloutBusInterface_xbus2_th_1;
/** PBIOEFIR[33]
* parser05 attn or X2odd link down
*/
- (rPBIOEFIR, bit(33)) ? self_th_1;
+ (rPBIOEFIR, bit(33)) ? calloutBusInterface_xbus2_th_1;
/** PBIOEFIR[34:35]
* spare
@@ -6313,17 +6313,17 @@ group gPBIOEFIR filter singlebit, cs_root_cause( 8, 11, 14 )
/** PBIOEFIR[52]
* data outbnd switch int. err-links 01
*/
- (rPBIOEFIR, bit(52)) ? chip_to_chip;
+ (rPBIOEFIR, bit(52)) ? calloutBusInterface_xbus0_th_1;
/** PBIOEFIR[53]
* data outbnd switch int. err-links 23
*/
- (rPBIOEFIR, bit(53)) ? chip_to_chip;
+ (rPBIOEFIR, bit(53)) ? calloutBusInterface_xbus1_th_1;
/** PBIOEFIR[54]
* data outbnd switch int. err-links 45
*/
- (rPBIOEFIR, bit(54)) ? chip_to_chip;
+ (rPBIOEFIR, bit(54)) ? calloutBusInterface_xbus2_th_1;
/** PBIOEFIR[55]
* spare
@@ -6333,17 +6333,17 @@ group gPBIOEFIR filter singlebit, cs_root_cause( 8, 11, 14 )
/** PBIOEFIR[56]
* data inbnd switch int. err-links 01
*/
- (rPBIOEFIR, bit(56)) ? chip_to_chip;
+ (rPBIOEFIR, bit(56)) ? calloutBusInterface_xbus0_th_1;
/** PBIOEFIR[57]
* data inbnd switch int. err-links 23
*/
- (rPBIOEFIR, bit(57)) ? chip_to_chip;
+ (rPBIOEFIR, bit(57)) ? calloutBusInterface_xbus1_th_1;
/** PBIOEFIR[58]
* data inbnd switch int. err-links 45
*/
- (rPBIOEFIR, bit(58)) ? chip_to_chip;
+ (rPBIOEFIR, bit(58)) ? calloutBusInterface_xbus2_th_1;
/** PBIOEFIR[59:61]
* spare
diff --git a/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule b/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule
index 3a9811320..80b301266 100644
--- a/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule
+++ b/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule
@@ -6193,32 +6193,32 @@ group gPBIOEFIR filter singlebit, cs_root_cause( 8, 11, 14 )
/** PBIOEFIR[28]
* parser00 attn or X0evn link down
*/
- (rPBIOEFIR, bit(28)) ? self_th_1;
+ (rPBIOEFIR, bit(28)) ? calloutBusInterface_xbus0_th_1;
/** PBIOEFIR[29]
* parser01 attn or X0odd link down
*/
- (rPBIOEFIR, bit(29)) ? self_th_1;
+ (rPBIOEFIR, bit(29)) ? calloutBusInterface_xbus0_th_1;
/** PBIOEFIR[30]
* parser02 attn or X1evn link down
*/
- (rPBIOEFIR, bit(30)) ? self_th_1;
+ (rPBIOEFIR, bit(30)) ? calloutBusInterface_xbus1_th_1;
/** PBIOEFIR[31]
* parser03 attn or X1odd link down
*/
- (rPBIOEFIR, bit(31)) ? self_th_1;
+ (rPBIOEFIR, bit(31)) ? calloutBusInterface_xbus1_th_1;
/** PBIOEFIR[32]
* parser04 attn or X2evn link down
*/
- (rPBIOEFIR, bit(32)) ? self_th_1;
+ (rPBIOEFIR, bit(32)) ? calloutBusInterface_xbus2_th_1;
/** PBIOEFIR[33]
* parser05 attn or X2odd link down
*/
- (rPBIOEFIR, bit(33)) ? self_th_1;
+ (rPBIOEFIR, bit(33)) ? calloutBusInterface_xbus2_th_1;
/** PBIOEFIR[34:35]
* spare
@@ -6293,17 +6293,17 @@ group gPBIOEFIR filter singlebit, cs_root_cause( 8, 11, 14 )
/** PBIOEFIR[52]
* data outbnd switch int. err-links 01
*/
- (rPBIOEFIR, bit(52)) ? chip_to_chip;
+ (rPBIOEFIR, bit(52)) ? calloutBusInterface_xbus0_th_1;
/** PBIOEFIR[53]
* data outbnd switch int. err-links 23
*/
- (rPBIOEFIR, bit(53)) ? chip_to_chip;
+ (rPBIOEFIR, bit(53)) ? calloutBusInterface_xbus1_th_1;
/** PBIOEFIR[54]
* data outbnd switch int. err-links 45
*/
- (rPBIOEFIR, bit(54)) ? chip_to_chip;
+ (rPBIOEFIR, bit(54)) ? calloutBusInterface_xbus2_th_1;
/** PBIOEFIR[55]
* spare
@@ -6313,17 +6313,17 @@ group gPBIOEFIR filter singlebit, cs_root_cause( 8, 11, 14 )
/** PBIOEFIR[56]
* data inbnd switch int. err-links 01
*/
- (rPBIOEFIR, bit(56)) ? chip_to_chip;
+ (rPBIOEFIR, bit(56)) ? calloutBusInterface_xbus0_th_1;
/** PBIOEFIR[57]
* data inbnd switch int. err-links 23
*/
- (rPBIOEFIR, bit(57)) ? chip_to_chip;
+ (rPBIOEFIR, bit(57)) ? calloutBusInterface_xbus1_th_1;
/** PBIOEFIR[58]
* data inbnd switch int. err-links 45
*/
- (rPBIOEFIR, bit(58)) ? chip_to_chip;
+ (rPBIOEFIR, bit(58)) ? calloutBusInterface_xbus2_th_1;
/** PBIOEFIR[59:61]
* spare
diff --git a/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule b/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule
index 23820b776..a09d030db 100644
--- a/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule
+++ b/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule
@@ -122,3 +122,24 @@ actionclass analyzeNPU0FIR
analyze(gNPU0FIR);
};
+/** Callout connected XBUS 0 interface on first occurrence */
+actionclass calloutBusInterface_xbus0_th_1
+{
+ funccall("calloutBusInterface_XBUS0");
+ threshold1;
+};
+
+/** Callout connected XBUS 1 interface on first occurrence */
+actionclass calloutBusInterface_xbus1_th_1
+{
+ funccall("calloutBusInterface_XBUS1");
+ threshold1;
+};
+
+/** Callout connected XBUS 2 interface on first occurrence */
+actionclass calloutBusInterface_xbus2_th_1
+{
+ funccall("calloutBusInterface_XBUS2");
+ threshold1;
+};
+
diff --git a/src/usr/diag/prdf/common/plat/p9/p9_xbus.rule b/src/usr/diag/prdf/common/plat/p9/p9_xbus.rule
index a793d3855..512195c30 100644
--- a/src/usr/diag/prdf/common/plat/p9/p9_xbus.rule
+++ b/src/usr/diag/prdf/common/plat/p9/p9_xbus.rule
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2016,2017
+# Contributors Listed Below - COPYRIGHT 2016,2018
# [+] International Business Machines Corp.
#
#
@@ -189,7 +189,7 @@ group gIOXBFIR filter singlebit, cs_root_cause
/** IOXBFIR[2]
* GCR_HANG_ERROR
*/
- (rIOXBFIR, bit(2)) ? calloutXbusInterface;
+ (rIOXBFIR, bit(2)) ? calloutBusInterface_th_32perDay;
/** IOXBFIR[3:7]
* spare
@@ -372,7 +372,7 @@ rule rIOELFIR
IOELFIR & ~IOELFIR_MASK & IOELFIR_ACT0 & IOELFIR_ACT1;
};
-group gIOELFIR filter singlebit, cs_root_cause
+group gIOELFIR filter singlebit, cs_root_cause( 54, 55, 56, 57, 58, 59 )
{
/** IOELFIR[0]
* link0 trained
@@ -512,42 +512,42 @@ group gIOELFIR filter singlebit, cs_root_cause
/** IOELFIR[52]
* link0 correctable array error
*/
- (rIOELFIR, bit(52)) ? self_th_32perDay;
+ (rIOELFIR, bit(52)) ? calloutBusInterface_th_32perDay;
/** IOELFIR[53]
* link1 correctable array error
*/
- (rIOELFIR, bit(53)) ? self_th_32perDay;
+ (rIOELFIR, bit(53)) ? calloutBusInterface_th_32perDay;
/** IOELFIR[54]
* link0 uncorrectable array error
*/
- (rIOELFIR, bit(54)) ? self_th_32perDay;
+ (rIOELFIR, bit(54)) ? calloutBusInterface_th_32perDay;
/** IOELFIR[55]
* link1 uncorrectable array error
*/
- (rIOELFIR, bit(55)) ? self_th_32perDay;
+ (rIOELFIR, bit(55)) ? calloutBusInterface_th_32perDay;
/** IOELFIR[56]
* link0 training failed
*/
- (rIOELFIR, bit(56)) ? self_th_32perDay;
+ (rIOELFIR, bit(56)) ? calloutBusInterface_th_32perDay;
/** IOELFIR[57]
* link1 training failed
*/
- (rIOELFIR, bit(57)) ? self_th_32perDay;
+ (rIOELFIR, bit(57)) ? calloutBusInterface_th_32perDay;
/** IOELFIR[58]
* link0 unrecoverable error
*/
- (rIOELFIR, bit(58)) ? self_th_32perDay;
+ (rIOELFIR, bit(58)) ? calloutBusInterface_th_32perDay;
/** IOELFIR[59]
* link1 unrecoverable error
*/
- (rIOELFIR, bit(59)) ? self_th_32perDay;
+ (rIOELFIR, bit(59)) ? calloutBusInterface_th_32perDay;
/** IOELFIR[60]
* link0 internal error
diff --git a/src/usr/diag/prdf/common/plat/p9/p9_xbus_actions.rule b/src/usr/diag/prdf/common/plat/p9/p9_xbus_actions.rule
index 5db21f969..2afb6c9ed 100644
--- a/src/usr/diag/prdf/common/plat/p9/p9_xbus_actions.rule
+++ b/src/usr/diag/prdf/common/plat/p9/p9_xbus_actions.rule
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2017
+# Contributors Listed Below - COPYRIGHT 2017,2018
# [+] International Business Machines Corp.
#
#
@@ -29,6 +29,13 @@ actionclass calloutXbusInterface
funccall("calloutInterface_xbus");
};
+/** Callout the XBUS interface, threshold 32 per day */
+actionclass calloutBusInterface_th_32perDay
+{
+ calloutXbusInterface;
+ threshold32pday;
+};
+
/** Lane Repair: spare deployed */
actionclass spareDeployed
{
diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C b/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C
index 98c33238e..4fb6be4c5 100644
--- a/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C
+++ b/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C
@@ -44,6 +44,8 @@
#include <prdfP9PmRecovery.H>
#endif
+#include <prdfLaneRepair.H>
+
// Platform includes
using namespace TARGETING;
@@ -477,6 +479,53 @@ PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, PmRecovery );
//------------------------------------------------------------------------------
+/**
+ * @brief Callout a bus interface (i.e. XBUS, OBUS, DMI, etc.)
+ * @param i_chip PROC chip.
+ * @param i_type The bus endpoint type.
+ * @param i_pos The bus endpoint position relative to the processor.
+ * @param io_sc The step code data struct.
+ * @return SUCCESS
+ */
+int32_t calloutBusInterface( ExtensibleChip * i_chip, TARGETING::TYPE i_type,
+ uint32_t i_pos, STEP_CODE_DATA_STRUCT & io_sc )
+{
+ ExtensibleChip * endPoint = getConnectedChild( i_chip, i_type, i_pos );
+ if ( nullptr == endPoint )
+ {
+ PRDF_ERR( "[calloutBusInterface] connection lookup failed: 0x%08x "
+ "0x%02x %d", i_chip->getHuid(), i_type, i_pos );
+ io_sc.service_data->SetCallout(LEVEL2_SUPPORT, MRU_HIGH);
+ io_sc.service_data->SetCallout(i_chip->getTrgt());
+ io_sc.service_data->SetThresholdMaskId(0);
+ }
+ else
+ {
+ LaneRepair::calloutBusInterface( endPoint, io_sc, MRU_LOW );
+ }
+
+ return SUCCESS;
+}
+PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, calloutBusInterface );
+PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, calloutBusInterface );
+
+#define PLUGIN_CALLOUT_INTERFACE( TYPE, POS ) \
+int32_t calloutBusInterface_##TYPE##POS( ExtensibleChip * i_chip, \
+ STEP_CODE_DATA_STRUCT & io_sc ) \
+{ \
+ return calloutBusInterface( i_chip, TYPE_##TYPE, POS, io_sc ); \
+} \
+PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, calloutBusInterface_##TYPE##POS ); \
+PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, calloutBusInterface_##TYPE##POS );
+
+PLUGIN_CALLOUT_INTERFACE( XBUS, 0 )
+PLUGIN_CALLOUT_INTERFACE( XBUS, 1 )
+PLUGIN_CALLOUT_INTERFACE( XBUS, 2 )
+
+#undef PLUGIN_CALLOUT_INTERFACE
+
+//------------------------------------------------------------------------------
+
} // end namespace Proc
} // end namespace PRDF
OpenPOWER on IntegriCloud