Skip to content

Commit

Permalink
PRD: updates to XBUS interface callouts
Browse files Browse the repository at this point in the history
Change-Id: If7b58b48c673ccbc3b68ba3838472e12847748e1
CQ: SW406147
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/54936
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com>
Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com>
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/55866
CI-Ready: Zane C. Shelley <zshelle@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
  • Loading branch information
zane131 committed Mar 16, 2018
1 parent cc1ac14 commit d69704d
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 36 deletions.
24 changes: 12 additions & 12 deletions src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
24 changes: 12 additions & 12 deletions src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
21 changes: 21 additions & 0 deletions src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};

22 changes: 11 additions & 11 deletions src/usr/diag/prdf/common/plat/p9/p9_xbus.rule
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
# Contributors Listed Below - COPYRIGHT 2016,2017
# Contributors Listed Below - COPYRIGHT 2016,2018
# [+] International Business Machines Corp.
#
#
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
9 changes: 8 additions & 1 deletion src/usr/diag/prdf/common/plat/p9/p9_xbus_actions.rule
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
# Contributors Listed Below - COPYRIGHT 2017
# Contributors Listed Below - COPYRIGHT 2017,2018
# [+] International Business Machines Corp.
#
#
Expand All @@ -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
{
Expand Down
49 changes: 49 additions & 0 deletions src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@
#include <prdfP9PmRecovery.H>
#endif

#include <prdfLaneRepair.H>

// Platform includes

using namespace TARGETING;
Expand Down Expand Up @@ -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

0 comments on commit d69704d

Please sign in to comment.