diff options
8 files changed, 521 insertions, 86 deletions
diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_cxa_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_cxa_scom.C index fb32f1869..650e7cda5 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9_cxa_scom.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_cxa_scom.C @@ -29,6 +29,9 @@ using namespace fapi2; +constexpr uint64_t literal_0 = 0; +constexpr uint64_t literal_0x801B1F98C8717000 = 0x801B1F98C8717000; +constexpr uint64_t literal_1 = 1; constexpr uint64_t literal_0x801B1F98D8717000 = 0x801B1F98D8717000; constexpr uint64_t literal_0x0000000000000 = 0x0000000000000; constexpr uint64_t literal_0x2080000020080 = 0x2080000020080; @@ -45,13 +48,23 @@ fapi2::ReturnCode p9_cxa_scom(const fapi2::Target<fapi2::TARGET_TYPE_CAPP>& TGT0 fapi2::ATTR_NAME_Type l_chip_id; 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_CHIP_EC_FEATURE_HW414700_Type l_TGT2_ATTR_CHIP_EC_FEATURE_HW414700; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW414700, TGT2, l_TGT2_ATTR_CHIP_EC_FEATURE_HW414700)); fapi2::ATTR_PROC_FABRIC_PUMP_MODE_Type l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE; FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_PUMP_MODE, TGT1, l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE)); fapi2::buffer<uint64_t> l_scom_buffer; { FAPI_TRY(fapi2::getScom( TGT0, 0x2010803ull, l_scom_buffer )); - l_scom_buffer.insert<0, 53, 0, uint64_t>(literal_0x801B1F98D8717000 ); + if ((l_TGT2_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<0, 53, 0, uint64_t>(literal_0x801B1F98C8717000 ); + } + else if (literal_1) + { + l_scom_buffer.insert<0, 53, 0, uint64_t>(literal_0x801B1F98D8717000 ); + } + FAPI_TRY(fapi2::putScom(TGT0, 0x2010803ull, l_scom_buffer)); } { diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_mmu_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_mmu_scom.C index 20ced7335..15ef8b00f 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9_mmu_scom.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_mmu_scom.C @@ -33,6 +33,7 @@ constexpr uint64_t literal_0 = 0; constexpr uint64_t literal_0x04047C0000000000 = 0x04047C0000000000; constexpr uint64_t literal_0x04247C0000000000 = 0x04247C0000000000; constexpr uint64_t literal_0x0000000000000000 = 0x0000000000000000; +constexpr uint64_t literal_0x40B2000000000000 = 0x40B2000000000000; constexpr uint64_t literal_0x409B000000000000 = 0x409B000000000000; constexpr uint64_t literal_0x40FB000000000000 = 0x40FB000000000000; constexpr uint64_t literal_0x3 = 0x3; @@ -40,6 +41,7 @@ constexpr uint64_t literal_0x1 = 0x1; constexpr uint64_t literal_0x0000FAF800FF = 0x0000FAF800FF; constexpr uint64_t literal_0x0000FAFC00FB = 0x0000FAFC00FB; constexpr uint64_t literal_0x000000000000 = 0x000000000000; +constexpr uint64_t literal_0x951100000F04 = 0x951100000F04; constexpr uint64_t literal_0x910000040F00 = 0x910000040F00; constexpr uint64_t literal_0x9D1100000F04 = 0x9D1100000F04; constexpr uint64_t literal_0b11111 = 0b11111; @@ -57,6 +59,8 @@ fapi2::ReturnCode p9_mmu_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT0, l_chip_ec)); fapi2::ATTR_CHIP_EC_FEATURE_NMMU_NDD1_Type l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_NDD1; FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_NMMU_NDD1, TGT0, l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_NDD1)); + fapi2::ATTR_CHIP_EC_FEATURE_HW414700_Type l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW414700, TGT0, l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700)); fapi2::ATTR_PROC_FABRIC_PUMP_MODE_Type l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE; FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_PUMP_MODE, TGT1, l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE)); fapi2::ATTR_PROC_EPS_WRITE_CYCLES_T1_Type l_TGT1_ATTR_PROC_EPS_WRITE_CYCLES_T1; @@ -87,7 +91,11 @@ fapi2::ReturnCode p9_mmu_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& { FAPI_TRY(fapi2::getScom( TGT0, 0x5012c07ull, l_scom_buffer )); - if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_NDD1 != literal_0)) + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<0, 22, 0, uint64_t>(literal_0x40B2000000000000 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_NDD1 != literal_0)) { l_scom_buffer.insert<0, 22, 0, uint64_t>(literal_0x409B000000000000 ); } @@ -154,7 +162,11 @@ fapi2::ReturnCode p9_mmu_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& { FAPI_TRY(fapi2::getScom( TGT0, 0x5012c47ull, l_scom_buffer )); - if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_NDD1 != literal_0)) + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<0, 48, 16, uint64_t>(literal_0x951100000F04 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_NDD1 != literal_0)) { l_scom_buffer.insert<0, 48, 16, uint64_t>(literal_0x910000040F00 ); } diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_nx_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_nx_scom.C index cfae24efb..810493f2d 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9_nx_scom.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_nx_scom.C @@ -34,6 +34,7 @@ constexpr uint64_t literal_0b0 = 0b0; constexpr uint64_t literal_0b1 = 0b1; constexpr uint64_t literal_0b11 = 0b11; constexpr uint64_t literal_0b00 = 0b00; +constexpr uint64_t literal_0 = 0; constexpr uint64_t literal_0xFC = 0xFC; constexpr uint64_t literal_8 = 8; constexpr uint64_t literal_2 = 2; @@ -52,6 +53,8 @@ fapi2::ReturnCode p9_nx_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT0, l_chip_ec)); fapi2::ATTR_CHIP_EC_FEATURE_HW403701_Type l_TGT0_ATTR_CHIP_EC_FEATURE_HW403701; FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW403701, TGT0, l_TGT0_ATTR_CHIP_EC_FEATURE_HW403701)); + fapi2::ATTR_CHIP_EC_FEATURE_HW414700_Type l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW414700, TGT0, l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700)); fapi2::ATTR_PROC_FABRIC_PUMP_MODE_Type l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE; FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_PUMP_MODE, TGT1, l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE)); fapi2::buffer<uint64_t> l_scom_buffer; @@ -410,49 +413,233 @@ fapi2::ReturnCode p9_nx_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& { FAPI_TRY(fapi2::getScom( TGT0, 0x2011087ull, l_scom_buffer )); - l_scom_buffer.insert<0, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<10, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<11, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<12, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<13, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<14, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<15, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<16, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<17, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<18, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<19, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<1, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<20, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<21, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<22, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<23, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<24, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<25, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<26, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<27, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<28, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<29, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<2, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<30, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<31, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<32, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<33, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<34, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<35, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<36, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<37, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<38, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<39, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<3, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<40, 2, 62, uint64_t>(literal_0b00 ); - l_scom_buffer.insert<42, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<43, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<4, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<5, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<6, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<7, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<8, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<9, 1, 63, uint64_t>(literal_0b0 ); + if (literal_1) + { + l_scom_buffer.insert<0, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<10, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<11, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<12, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<13, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<14, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<15, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<16, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<17, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<18, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<19, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<1, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<20, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<21, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<22, 1, 63, uint64_t>(literal_0b0 ); + } + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<23, 1, 63, uint64_t>(literal_0b0 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 == literal_0)) + { + l_scom_buffer.insert<23, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<24, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<25, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<26, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<27, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<28, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<29, 1, 63, uint64_t>(literal_0b0 ); + } + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<2, 1, 63, uint64_t>(literal_0b0 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 == literal_0)) + { + l_scom_buffer.insert<2, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<30, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<31, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<32, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<33, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<34, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<35, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<36, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<37, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<38, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<39, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<3, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<40, 2, 62, uint64_t>(literal_0b00 ); + } + + if (literal_1) + { + l_scom_buffer.insert<42, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<43, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<4, 1, 63, uint64_t>(literal_0b1 ); + } + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<5, 1, 63, uint64_t>(literal_0b0 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 == literal_0)) + { + l_scom_buffer.insert<5, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<6, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<7, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<8, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<9, 1, 63, uint64_t>(literal_0b0 ); + } + FAPI_TRY(fapi2::putScom(TGT0, 0x2011087ull, l_scom_buffer)); } { @@ -607,43 +794,211 @@ fapi2::ReturnCode p9_nx_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& { FAPI_TRY(fapi2::getScom( TGT0, 0x2011107ull, l_scom_buffer )); - l_scom_buffer.insert<0, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<10, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<11, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<12, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<13, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<14, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<15, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<16, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<17, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<18, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<19, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<1, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<20, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<21, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<22, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<23, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<24, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<25, 6, 58, uint64_t>(literal_0b000000 ); - l_scom_buffer.insert<2, 2, 62, uint64_t>(literal_0b00 ); - l_scom_buffer.insert<31, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<32, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<33, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<34, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<35, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<36, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<37, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<38, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<39, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<40, 8, 56, uint64_t>(literal_0b00000000 ); - l_scom_buffer.insert<48, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<49, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<4, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<5, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<6, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<7, 1, 63, uint64_t>(literal_0b1 ); - l_scom_buffer.insert<8, 1, 63, uint64_t>(literal_0b0 ); - l_scom_buffer.insert<9, 1, 63, uint64_t>(literal_0b1 ); + if (literal_1) + { + l_scom_buffer.insert<0, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<10, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<11, 1, 63, uint64_t>(literal_0b1 ); + } + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<12, 1, 63, uint64_t>(literal_0b0 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 == literal_0)) + { + l_scom_buffer.insert<12, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<13, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<14, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<15, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<16, 1, 63, uint64_t>(literal_0b0 ); + } + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<17, 1, 63, uint64_t>(literal_0b0 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 == literal_0)) + { + l_scom_buffer.insert<17, 1, 63, uint64_t>(literal_0b1 ); + } + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<18, 1, 63, uint64_t>(literal_0b0 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 == literal_0)) + { + l_scom_buffer.insert<18, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<19, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<1, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<20, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<21, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<22, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<23, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<24, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<25, 6, 58, uint64_t>(literal_0b000000 ); + } + + if (literal_1) + { + l_scom_buffer.insert<2, 2, 62, uint64_t>(literal_0b00 ); + } + + if (literal_1) + { + l_scom_buffer.insert<31, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<32, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<33, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<34, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<35, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<36, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<37, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<38, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<39, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<40, 8, 56, uint64_t>(literal_0b00000000 ); + } + + if (literal_1) + { + l_scom_buffer.insert<48, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<49, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<4, 1, 63, uint64_t>(literal_0b1 ); + } + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<5, 1, 63, uint64_t>(literal_0b0 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 == literal_0)) + { + l_scom_buffer.insert<5, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<6, 1, 63, uint64_t>(literal_0b1 ); + } + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<7, 1, 63, uint64_t>(literal_0b0 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 == literal_0)) + { + l_scom_buffer.insert<7, 1, 63, uint64_t>(literal_0b1 ); + } + + if (literal_1) + { + l_scom_buffer.insert<8, 1, 63, uint64_t>(literal_0b0 ); + } + + if (literal_1) + { + l_scom_buffer.insert<9, 1, 63, uint64_t>(literal_0b1 ); + } + FAPI_TRY(fapi2::putScom(TGT0, 0x2011107ull, l_scom_buffer)); } diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_vas_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_vas_scom.C index 539ad87fa..e4408a843 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9_vas_scom.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_vas_scom.C @@ -31,6 +31,8 @@ using namespace fapi2; constexpr uint64_t literal_0x00200102000D7FFF = 0x00200102000D7FFF; constexpr uint64_t literal_0x0000000000000000 = 0x0000000000000000; +constexpr uint64_t literal_0 = 0; +constexpr uint64_t literal_0x00DD0201C0000000 = 0x00DD0201C0000000; constexpr uint64_t literal_0x00DF0201C0000000 = 0x00DF0201C0000000; constexpr uint64_t literal_0x0080000000000000 = 0x0080000000000000; constexpr uint64_t literal_0x1 = 0x1; @@ -44,6 +46,8 @@ fapi2::ReturnCode p9_vas_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& 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)); + fapi2::ATTR_CHIP_EC_FEATURE_HW414700_Type l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW414700, TGT0, l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700)); fapi2::ATTR_PROC_FABRIC_PUMP_MODE_Type l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE; FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_PUMP_MODE, TGT1, l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE)); fapi2::buffer<uint64_t> l_scom_buffer; @@ -62,7 +66,15 @@ fapi2::ReturnCode p9_vas_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& { FAPI_TRY(fapi2::getScom( TGT0, 0x3011807ull, l_scom_buffer )); - l_scom_buffer.insert<0, 54, 0, uint64_t>(literal_0x00DF0201C0000000 ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_HW414700 != literal_0)) + { + l_scom_buffer.insert<0, 54, 0, uint64_t>(literal_0x00DD0201C0000000 ); + } + else if (( true )) + { + l_scom_buffer.insert<0, 54, 0, uint64_t>(literal_0x00DF0201C0000000 ); + } + FAPI_TRY(fapi2::putScom(TGT0, 0x3011807ull, l_scom_buffer)); } { diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C b/src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C index 5e085638e..446de7219 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C @@ -65,6 +65,7 @@ fapi2::ReturnCode after_memdiags( const fapi2::Target<TARGET_TYPE_MCBIST>& i_tar uint64_t rd_tag_delay = 0; uint64_t wr_done_delay = 0; uint64_t mnfg_flag = 0; + fapi2::ATTR_CHIP_EC_FEATURE_HW414700_Type l_checkstop_flag; for (const auto& p : mss::find_targets<TARGET_TYPE_MCA>(i_target)) { @@ -87,6 +88,16 @@ fapi2::ReturnCode after_memdiags( const fapi2::Target<TARGET_TYPE_MCBIST>& i_tar .checkstop<MCA_FIR_MAINLINE_IAUE>() .recoverable_error<MCA_FIR_MAINLINE_IUE>(); + // If ATTR_CHIP_EC_FEATURE_HW414700 is enabled set checkstops + auto l_chip_target = mss::find_target<fapi2::TARGET_TYPE_PROC_CHIP>(i_target); + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW414700, l_chip_target, l_checkstop_flag) ); + + if (l_checkstop_flag) + { + l_ecc64_fir_reg.checkstop<MCA_FIR_MAINLINE_UE>() + .checkstop<MCA_FIR_MAINLINE_RCD>(); + } + // If MNFG FLAG Threshhold is enabled skip IUE unflagging FAPI_TRY (mss::mnfg_flags(mnfg_flag) ); diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_fabric_scominit.C b/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_fabric_scominit.C index c2064485a..941754439 100644 --- a/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_fabric_scominit.C +++ b/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_fabric_scominit.C @@ -56,6 +56,7 @@ //------------------------------------------------------------------------------ const uint64_t FBC_IOE_TL_FIR_ACTION0 = 0x0000000000000000ULL; const uint64_t FBC_IOE_TL_FIR_ACTION1 = 0x004B000000000000ULL; +const uint64_t FBC_IOE_TL_FIR_ACTION1_HW414700 = 0x0049000000000000ULL; const uint64_t FBC_IOE_TL_FIR_MASK = 0xFF24F0303FFFFFFFULL; const uint64_t FBC_IOE_DL_FIR_ACTION0 = 0x0000000000000000ULL; @@ -107,9 +108,15 @@ fapi2::ReturnCode p9_chiplet_fabric_scominit(const fapi2::Target<fapi2::TARGET_T if (l_xbus_chiplets.size()) { + uint8_t l_hw414700; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW414700, i_target, l_hw414700), + "Error from FAPI_ATTR_GET (ATTR_CHIP_EC_FEATURE_HW414700)"); FAPI_TRY(fapi2::putScom(i_target, PU_PB_IOE_FIR_ACTION0_REG, FBC_IOE_TL_FIR_ACTION0), "Error from putScom (PU_PB_IOE_FIR_ACTION0_REG)"); - FAPI_TRY(fapi2::putScom(i_target, PU_PB_IOE_FIR_ACTION1_REG, FBC_IOE_TL_FIR_ACTION1), + FAPI_TRY(fapi2::putScom(i_target, PU_PB_IOE_FIR_ACTION1_REG, + (l_hw414700) ? + (FBC_IOE_TL_FIR_ACTION1_HW414700) : + (FBC_IOE_TL_FIR_ACTION1)), "Error from putScom (PU_PB_IOE_FIR_ACTION1_REG)"); FAPI_TRY(fapi2::putScom(i_target, PU_PB_IOE_FIR_MASK_REG, FBC_IOE_TL_FIR_MASK), "Error from putScom (PU_PB_IOE_FIR_MASK_REG)"); diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_scominit.C b/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_scominit.C index 8124012a8..9bf3e8aaf 100644 --- a/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_scominit.C +++ b/src/import/chips/p9/procedures/hwp/nest/p9_chiplet_scominit.C @@ -60,6 +60,7 @@ //------------------------------------------------------------------------------ const uint64_t FBC_IOO_TL_FIR_ACTION0 = 0x0000000000000000ULL; const uint64_t FBC_IOO_TL_FIR_ACTION1 = 0x0002400000000000ULL; +const uint64_t FBC_IOO_TL_FIR_ACTION1_HW414700 = 0x0000000000000000ULL; const uint64_t FBC_IOO_TL_FIR_MASK = 0xFF6DB0000FFFFFFFULL; const uint64_t FBC_IOO_DL_FIR_ACTION0 = 0x0000000000000000ULL; @@ -211,9 +212,15 @@ fapi2::ReturnCode p9_chiplet_scominit(const fapi2::Target<fapi2::TARGET_TYPE_PRO if (l_obus_chiplets.size()) { + uint8_t l_hw414700; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW414700, i_target, l_hw414700), + "Error from FAPI_ATTR_GET (ATTR_CHIP_EC_FEATURE_HW414700)"); FAPI_TRY(fapi2::putScom(i_target, PU_IOE_PB_IOO_FIR_ACTION0_REG, FBC_IOO_TL_FIR_ACTION0), "Error from putScom (PU_IOE_PB_IOO_FIR_ACTION0_REG)"); - FAPI_TRY(fapi2::putScom(i_target, PU_IOE_PB_IOO_FIR_ACTION1_REG, FBC_IOO_TL_FIR_ACTION1), + FAPI_TRY(fapi2::putScom(i_target, PU_IOE_PB_IOO_FIR_ACTION1_REG, + (l_hw414700) ? + (FBC_IOO_TL_FIR_ACTION1_HW414700) : + (FBC_IOO_TL_FIR_ACTION1)), "Error from putScom (PU_IOE_PB_IOO_FIR_ACTION1_REG)"); FAPI_TRY(fapi2::putScom(i_target, PU_IOE_PB_IOO_FIR_MASK_REG, FBC_IOO_TL_FIR_MASK), "Error from putScom (PU_IOE_PB_IOO_FIR_MASK_REG)"); diff --git a/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml index cce652faa..43ee178a9 100644 --- a/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml +++ b/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml @@ -3535,6 +3535,24 @@ </chipEcFeature> </attribute> + <attribute> + <id>ATTR_CHIP_EC_FEATURE_HW414700</id> + <targetType>TARGET_TYPE_PROC_CHIP</targetType> + <description> + Nimbus DD2.0 only -- set all UE FIRs to checkstop + </description> + <chipEcFeature> + <chip> + <name>ENUM_ATTR_NAME_NIMBUS</name> + <ec> + <value>0x20</value> + <test>EQUAL</test> + </ec> + </chip> + </chipEcFeature> + </attribute> + + <!-- ******************************************************************** --> <!-- Memory Section --> <!-- ******************************************************************** --> |