Skip to content

Commit

Permalink
nest updates for p9c DD1.3 native and p9c DD1.2 compatibility modes
Browse files Browse the repository at this point in the history
  HW 446279 - disable update for compat and native modes
  HW 439321 - disable update for compat, enable for native mode
  HW 443004 - disable update for compat and native modes
  HW 446453 - disable update for compat, enable for native mode

Change-Id: I3dd1ed6075ff473adbaf342671dd977c53fb2f06
CQ: HW446279
CQ: HW439321
CQ: HW443004
CQ: HW446453
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/64067
Reviewed-by: LUKE MURRAY <murrayl@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Thi N. Tran <thi@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/64084
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>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
  • Loading branch information
jjmcgill authored and dcrowell77 committed Aug 20, 2018
1 parent b407cfc commit af570fb
Show file tree
Hide file tree
Showing 8 changed files with 102 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,10 @@ constexpr uint64_t literal_0b0011000 = 0b0011000;
constexpr uint64_t literal_0b0010001 = 0b0010001;
constexpr uint64_t literal_0b00 = 0b00;
constexpr uint64_t literal_0b11 = 0b11;
constexpr uint64_t literal_0x1 = 0x1;
constexpr uint64_t literal_0x0 = 0x0;
constexpr uint64_t literal_0b1000000 = 0b1000000;
constexpr uint64_t literal_0b0001111 = 0b0001111;
constexpr uint64_t literal_0b101 = 0b101;
constexpr uint64_t literal_0b0111 = 0b0111;
constexpr uint64_t literal_0b0011 = 0b0011;
Expand All @@ -64,17 +67,22 @@ constexpr uint64_t literal_0b0010110 = 0b0010110;
constexpr uint64_t literal_0b1000110 = 0b1000110;

fapi2::ReturnCode centaur_dmi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MEMBUF_CHIP>& TGT0,
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1)
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT2)
{
{
fapi2::ATTR_EC_Type l_chip_ec;
fapi2::ATTR_NAME_Type l_chip_id;
FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_NAME, TGT0, l_chip_id));
FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT0, l_chip_ec));
FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_NAME, TGT2, l_chip_id));
FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT2, l_chip_ec));
fapi2::ATTR_IS_SIMULATION_Type l_TGT1_ATTR_IS_SIMULATION;
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_IS_SIMULATION, TGT1, l_TGT1_ATTR_IS_SIMULATION));
uint64_t l_def_IS_HW = (l_TGT1_ATTR_IS_SIMULATION == literal_0);
uint64_t l_def_IS_SIM = (l_TGT1_ATTR_IS_SIMULATION == literal_1);
fapi2::ATTR_RISK_LEVEL_Type l_TGT1_ATTR_RISK_LEVEL;
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_RISK_LEVEL, TGT1, l_TGT1_ATTR_RISK_LEVEL));
fapi2::ATTR_CHIP_EC_FEATURE_HW439321_FIXED_IN_P9UDD13_Type l_TGT2_ATTR_CHIP_EC_FEATURE_HW439321_FIXED_IN_P9UDD13;
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW439321_FIXED_IN_P9UDD13, TGT2,
l_TGT2_ATTR_CHIP_EC_FEATURE_HW439321_FIXED_IN_P9UDD13));
fapi2::ATTR_EI_BUS_TX_MSBSWAP_Type l_TGT0_ATTR_EI_BUS_TX_MSBSWAP;
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_EI_BUS_TX_MSBSWAP, TGT0, l_TGT0_ATTR_EI_BUS_TX_MSBSWAP));
fapi2::buffer<uint64_t> l_scom_buffer;
Expand Down Expand Up @@ -588,9 +596,28 @@ fapi2::ReturnCode centaur_dmi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MEMBUF
{
FAPI_TRY(fapi2::getScom( TGT0, 0x8009d8000201043full, l_scom_buffer ));

l_scom_buffer.insert<48, 7, 57, uint64_t>(literal_0b1000000 );
constexpr auto l_DMI_RX_RXCTL_RX_CTL_REGS_RX_DYN_RPR_ERR_CNTR1_DURATION_TAP2 = 0x2;
l_scom_buffer.insert<55, 4, 60, uint64_t>(l_DMI_RX_RXCTL_RX_CTL_REGS_RX_DYN_RPR_ERR_CNTR1_DURATION_TAP2 );
if (((( ! l_TGT2_ATTR_CHIP_EC_FEATURE_HW439321_FIXED_IN_P9UDD13) || (l_TGT1_ATTR_RISK_LEVEL == literal_0x0))
|| (l_TGT1_ATTR_RISK_LEVEL == literal_0x1)))
{
l_scom_buffer.insert<48, 7, 57, uint64_t>(literal_0b1000000 );
}
else if (( true ))
{
l_scom_buffer.insert<48, 7, 57, uint64_t>(literal_0b0001111 );
}

if (((( ! l_TGT2_ATTR_CHIP_EC_FEATURE_HW439321_FIXED_IN_P9UDD13) || (l_TGT1_ATTR_RISK_LEVEL == literal_0x0))
|| (l_TGT1_ATTR_RISK_LEVEL == literal_0x1)))
{
constexpr auto l_DMI_RX_RXCTL_RX_CTL_REGS_RX_DYN_RPR_ERR_CNTR1_DURATION_TAP2 = 0x2;
l_scom_buffer.insert<55, 4, 60, uint64_t>(l_DMI_RX_RXCTL_RX_CTL_REGS_RX_DYN_RPR_ERR_CNTR1_DURATION_TAP2 );
}
else if (( true ))
{
constexpr auto l_DMI_RX_RXCTL_RX_CTL_REGS_RX_DYN_RPR_ERR_CNTR1_DURATION_TAP7 = 0x7;
l_scom_buffer.insert<55, 4, 60, uint64_t>(l_DMI_RX_RXCTL_RX_CTL_REGS_RX_DYN_RPR_ERR_CNTR1_DURATION_TAP7 );
}

l_scom_buffer.insert<61, 3, 61, uint64_t>(literal_0b101 );
FAPI_TRY(fapi2::putScom(TGT0, 0x8009d8000201043full, l_scom_buffer));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@


typedef fapi2::ReturnCode (*centaur_dmi_scom_FP_t)(const fapi2::Target<fapi2::TARGET_TYPE_MEMBUF_CHIP>&,
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>&);
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>&, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>&);

extern "C"
{

fapi2::ReturnCode centaur_dmi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MEMBUF_CHIP>& TGT0,
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1);
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT2);

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ constexpr uint64_t literal_0b0 = 0b0;
constexpr uint64_t literal_0b0000000 = 0b0000000;
constexpr uint64_t literal_0x0 = 0x0;
constexpr uint64_t literal_0b00000 = 0b00000;
constexpr uint64_t literal_0x1 = 0x1;
constexpr uint64_t literal_0b1 = 0b1;
constexpr uint64_t literal_0b010010 = 0b010010;
constexpr uint64_t literal_0b00 = 0b00;
constexpr uint64_t literal_0b00000000000000000000 = 0b00000000000000000000;
Expand Down Expand Up @@ -64,7 +66,6 @@ constexpr uint64_t literal_8 = 8;
constexpr uint64_t literal_0b10 = 0b10;
constexpr uint64_t literal_4 = 4;
constexpr uint64_t literal_0b01 = 0b01;
constexpr uint64_t literal_0b1 = 0b1;
constexpr uint64_t literal_13 = 13;
constexpr uint64_t literal_10 = 10;
constexpr uint64_t literal_12 = 12;
Expand Down Expand Up @@ -117,13 +118,20 @@ constexpr uint64_t literal_0xAA = 0xAA;

fapi2::ReturnCode centaur_mbs_scom(const fapi2::Target<fapi2::TARGET_TYPE_MEMBUF_CHIP>& TGT0,
const fapi2::Target<fapi2::TARGET_TYPE_MBA>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_L4>& TGT2,
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT3)
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT3, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT4)
{
{
fapi2::ATTR_EC_Type l_chip_ec;
fapi2::ATTR_NAME_Type l_chip_id;
FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_NAME, TGT0, l_chip_id));
FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT0, l_chip_ec));
FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_NAME, TGT4, l_chip_id));
FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT4, l_chip_ec));
fapi2::ATTR_RISK_LEVEL_Type l_TGT3_ATTR_RISK_LEVEL;
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_RISK_LEVEL, TGT3, l_TGT3_ATTR_RISK_LEVEL));
fapi2::ATTR_CHIP_EC_FEATURE_HW439321_FIXED_IN_P9UDD13_Type l_TGT4_ATTR_CHIP_EC_FEATURE_HW439321_FIXED_IN_P9UDD13;
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW439321_FIXED_IN_P9UDD13, TGT4,
l_TGT4_ATTR_CHIP_EC_FEATURE_HW439321_FIXED_IN_P9UDD13));
uint64_t l_def_hw439321_wa = ((( ! l_TGT4_ATTR_CHIP_EC_FEATURE_HW439321_FIXED_IN_P9UDD13)
|| (l_TGT3_ATTR_RISK_LEVEL == literal_0x0)) || (l_TGT3_ATTR_RISK_LEVEL == literal_0x1));
fapi2::ATTR_CEN_MSS_DERIVED_MBA_ADDR_INTERLEAVE_BIT_Type l_TGT0_ATTR_CEN_MSS_DERIVED_MBA_ADDR_INTERLEAVE_BIT;
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CEN_MSS_DERIVED_MBA_ADDR_INTERLEAVE_BIT, TGT0,
l_TGT0_ATTR_CEN_MSS_DERIVED_MBA_ADDR_INTERLEAVE_BIT));
Expand Down Expand Up @@ -784,10 +792,14 @@ fapi2::ReturnCode centaur_mbs_scom(const fapi2::Target<fapi2::TARGET_TYPE_MEMBUF
l_scom_buffer.insert<21, 5, 59, uint64_t>(literal_0b00000 );
}

if (literal_1)
if ((l_def_hw439321_wa == literal_1))
{
l_scom_buffer.insert<26, 1, 63, uint64_t>(literal_0b0 );
}
else if (literal_1)
{
l_scom_buffer.insert<26, 1, 63, uint64_t>(literal_0b1 );
}

if (literal_1)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@

typedef fapi2::ReturnCode (*centaur_mbs_scom_FP_t)(const fapi2::Target<fapi2::TARGET_TYPE_MEMBUF_CHIP>&,
const fapi2::Target<fapi2::TARGET_TYPE_MBA>&, const fapi2::Target<fapi2::TARGET_TYPE_L4>&,
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>&);
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>&, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>&);

extern "C"
{

fapi2::ReturnCode centaur_mbs_scom(const fapi2::Target<fapi2::TARGET_TYPE_MEMBUF_CHIP>& TGT0,
const fapi2::Target<fapi2::TARGET_TYPE_MBA>& TGT1, const fapi2::Target<fapi2::TARGET_TYPE_L4>& TGT2,
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT3);
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT3, const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT4);

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,13 @@ fapi2::ReturnCode p9_io_cen_scominit(const CEN_TGT& i_tgt)
// Get system target
const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM> sys_tgt;

// Get attached processor target
const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> proc_tgt = i_tgt.
getParent<fapi2::TARGET_TYPE_DMI>().
getParent<fapi2::TARGET_TYPE_PROC_CHIP>();

FAPI_INF("Invoke FAPI procedure core: input_target");
FAPI_EXEC_HWP(rc, centaur_dmi_scom, i_tgt, sys_tgt);
FAPI_EXEC_HWP(rc, centaur_dmi_scom, i_tgt, sys_tgt, proc_tgt);

if(rc)
{
Expand Down
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 @@ -58,6 +58,9 @@ extern "C" {
// Get a vector of the functional MBA targets
const auto l_mba_targets = i_target.getChildren<fapi2::TARGET_TYPE_MBA>();
const auto l_l4_targets = i_target.getChildren<fapi2::TARGET_TYPE_L4>(fapi2::TARGET_STATE_PRESENT);
const auto l_proc_target = i_target.
getParent<fapi2::TARGET_TYPE_DMI>().
getParent<fapi2::TARGET_TYPE_PROC_CHIP>();

FAPI_ASSERT(l_l4_targets.size() > 0,
fapi2::CEN_MSS_SCOMINIT_NUM_L4_ERROR().
Expand Down Expand Up @@ -91,7 +94,7 @@ extern "C" {
for (const auto& mba : l_mba_targets)
{
FAPI_DBG("Running MBS scom initfile\n");
FAPI_EXEC_HWP(l_rc, centaur_mbs_scom, i_target, mba, l_l4_targets[0], FAPI_SYSTEM);
FAPI_EXEC_HWP(l_rc, centaur_mbs_scom, i_target, mba, l_l4_targets[0], FAPI_SYSTEM, l_proc_target);

if (l_rc)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ fapi2::ReturnCode p9_io_obus_image_build(CONST_OBUS& iTgt, void* const iHwImageP
uint8_t configMode = 0;
int xipSectionId = 0;
bool loadImage = false;
fapi2::ATTR_CHIP_EC_FEATURE_HW446279_Type l_ATTR_CHIP_EC_FEATURE_HW446279;
fapi2::ATTR_CHIP_EC_FEATURE_P9C_LOGIC_ONLY_Type l_p9c;

FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_OPTICS_CONFIG_MODE, iTgt, configMode),
"Error from FAPI_ATTR_GET(ATTR_OPTICS_CONFIG_MODE)");
Expand All @@ -128,9 +128,11 @@ fapi2::ReturnCode p9_io_obus_image_build(CONST_OBUS& iTgt, void* const iHwImageP
FAPI_IMP("ABUS IMAGE.");
xipSectionId = P9_XIP_SECTION_IOPPE_IOO_ABUS;
auto l_chip = iTgt.getParent<fapi2::TARGET_TYPE_PROC_CHIP>();
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW446279, l_chip, l_ATTR_CHIP_EC_FEATURE_HW446279));
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_P9C_LOGIC_ONLY,
l_chip,
l_p9c));

if(l_ATTR_CHIP_EC_FEATURE_HW446279)
if(l_p9c)
{
FAPI_IMP("ABUS IMAGE LOAD.");
loadImage = true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -771,22 +771,22 @@
</attribute>
<!-- ********************************************************************* -->
<attribute>
<id>ATTR_CHIP_EC_FEATURE_HW446279</id>
<id>ATTR_CHIP_EC_FEATURE_HW446279_DISABLE_FIX</id>
<targetType>TARGET_TYPE_PROC_CHIP</targetType>
<description>
HW446279 SMP Abus Cable Failure
Disable HW fixes to rely on PPE SW recovery
</description>
<chipEcFeature>
<chip>
<name>ENUM_ATTR_NAME_CUMULUS</name>
<ec>
<value>0x13</value>
<test>LESS_THAN</test>
<test>GREATER_THAN_OR_EQUAL</test>
</ec>
</chip>
</chipEcFeature>
</attribute>

<!-- ********************************************************************* -->
<attribute>
<id>ATTR_CHIP_EC_FEATURE_HW430944</id>
Expand Down Expand Up @@ -7650,17 +7650,43 @@
</attribute>
<!-- ******************************************************************** -->
<attribute>
<id>ATTR_CHIP_EC_FEATURE_HW440920</id>
<id>ATTR_CHIP_EC_FEATURE_HW440920_DISABLE_FIX</id>
<targetType>TARGET_TYPE_PROC_CHIP</targetType>
<description>
Revert to ordered ("p8") TLBIE mode, disable NMMU snoop of TLBIE.
HW fixes for HW440920 are present in chip logic, but
revert to ordered ("p8") TLBIE mode, disable NMMU snoop of TLBIE.
disable nest TLBIE changes
</description>
<chipEcFeature>
<chip>
<name>ENUM_ATTR_NAME_CUMULUS</name>
<ec>
<value>0x13</value>
<test>LESS_THAN</test>
<test>GREATER_THAN_OR_EQUAL</test>
</ec>
</chip>
</chipEcFeature>
</attribute>
<!-- ******************************************************************** -->
<attribute>
<id>ATTR_CHIP_EC_FEATURE_HW446453</id>
<targetType>TARGET_TYPE_PROC_CHIP</targetType>
<description>
NCU HW contains design change to address HW446453
</description>
<chipEcFeature>
<chip>
<name>ENUM_ATTR_NAME_CUMULUS</name>
<ec>
<value>0x13</value>
<test>GREATER_THAN_OR_EQUAL</test>
</ec>
</chip>
<chip>
<name>ENUM_ATTR_NAME_NIMBUS</name>
<ec>
<value>0x23</value>
<test>GREATER_THAN_OR_EQUAL</test>
</ec>
</chip>
</chipEcFeature>
Expand Down

0 comments on commit af570fb

Please sign in to comment.