summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9_cxa_scom.C15
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9_mmu_scom.C16
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9_nx_scom.C515
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9_vas_scom.C14
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/fir/memdiags_fir.C11
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_chiplet_fabric_scominit.C9
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_chiplet_scominit.C9
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml18
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 -->
<!-- ******************************************************************** -->
OpenPOWER on IntegriCloud