summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLuke C. Murray <murrayl@us.ibm.com>2017-11-03 17:23:03 -0500
committerSachin Gupta <sgupta2m@in.ibm.com>2017-12-05 23:09:45 -0500
commit62551f8feb3a2b8466241b8ebc2b3dabaae400f7 (patch)
tree67d4b7e15b12463066b93172b9067c98a8a09f29 /src
parent871d02a4e2c66e7c0501812abd86a27009cc73e0 (diff)
downloadtalos-sbe-62551f8feb3a2b8466241b8ebc2b3dabaae400f7.tar.gz
talos-sbe-62551f8feb3a2b8466241b8ebc2b3dabaae400f7.zip
Adding attribute to turn memory early data on
Performance wants a way to turn memory early data on & off using just scoms. Adding one attribute to control all the needed scoms and defaulting everything so that early data is off. For the L3 disable cp_me by default using scom Changing the scom cp_me dial to disable cp_me for all systems after Nimbus DD2.0. This is expected to be the correct setup for most systems. We didn't disable the cp_me at the scan, because the scom can only disable cp_me if ON or allow the scan setting if set OFF. Some systems might want cp_me enabled by only changing a scom. So the default is to set cp_me on at the scan and off a the scom. This way only the scom has to be turned off to enable cp_me. Also update three scoms in the memory controler that are needed for early data. Change-Id: Ib2106ec4b7d26cb084601f2d6eee68833b36d30b CQ: HW426419 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49261 Reviewed-by: Joseph J. McGill <jmcgill@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> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49331 Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9_l3_scom.C17
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml17
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/nest_attributes.xml15
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/p9_sbe_attributes.xml4
4 files changed, 53 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_l3_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_l3_scom.C
index c3bbe34c..eef022a4 100644
--- a/src/import/chips/p9/procedures/hwp/initfiles/p9_l3_scom.C
+++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_l3_scom.C
@@ -66,6 +66,8 @@ fapi2::ReturnCode p9_l3_scom(const fapi2::Target<fapi2::TARGET_TYPE_EX>& TGT0,
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_SYSTEM_IPL_PHASE, TGT1, l_TGT1_ATTR_SYSTEM_IPL_PHASE));
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_ENABLE_MEM_EARLY_DATA_SCOM_Type l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM;
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_ENABLE_MEM_EARLY_DATA_SCOM, TGT1, l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM));
fapi2::buffer<uint64_t> l_scom_buffer;
{
if (((l_chip_id == 0x5) && (l_chip_ec == 0x21)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x22)) || ((l_chip_id == 0x6)
@@ -158,6 +160,21 @@ fapi2::ReturnCode p9_l3_scom(const fapi2::Target<fapi2::TARGET_TYPE_EX>& TGT0,
l_scom_buffer.insert<30, 1, 63, uint64_t>(l_EXP_L3_L3_MISC_L3CERRS_L3_CERRS_LRU_DECR_EN_CFG_ON );
}
+ if (((l_chip_id == 0x5) && (l_chip_ec == 0x21)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x22)) || ((l_chip_id == 0x6)
+ && (l_chip_ec == 0x10)) || ((l_chip_id == 0x6) && (l_chip_ec == 0x11)) )
+ {
+ if ((l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM == fapi2::ENUM_ATTR_ENABLE_MEM_EARLY_DATA_SCOM_OFF))
+ {
+ constexpr auto l_EXP_L3_L3_MISC_L3CERRS_L3_SCOM_CP_ME_DROP_OVERRIDE_ON = 0x1;
+ l_scom_buffer.insert<6, 1, 63, uint64_t>(l_EXP_L3_L3_MISC_L3CERRS_L3_SCOM_CP_ME_DROP_OVERRIDE_ON );
+ }
+ else if ((l_TGT1_ATTR_ENABLE_MEM_EARLY_DATA_SCOM == fapi2::ENUM_ATTR_ENABLE_MEM_EARLY_DATA_SCOM_ON))
+ {
+ constexpr auto l_EXP_L3_L3_MISC_L3CERRS_L3_SCOM_CP_ME_DROP_OVERRIDE_OFF = 0x0;
+ l_scom_buffer.insert<6, 1, 63, uint64_t>(l_EXP_L3_L3_MISC_L3CERRS_L3_SCOM_CP_ME_DROP_OVERRIDE_OFF );
+ }
+ }
+
l_scom_buffer.insert<14, 4, 60, uint64_t>(literal_0b0001 );
l_scom_buffer.insert<18, 4, 60, uint64_t>(literal_0b0100 );
FAPI_TRY(fapi2::putScom(TGT0, 0x1001182bull, l_scom_buffer));
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 6d85503e..232a4de9 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
@@ -2400,6 +2400,23 @@
</attribute>
<!-- ******************************************************************** -->
<attribute>
+ <id>ATTR_CHIP_EC_FEATURE_PRE_CACHE_DD21_SETTINGS</id>
+ <targetType>TARGET_TYPE_PROC_CHIP</targetType>
+ <description>
+ Not workaround or defect related. Just new dials to be set that are new in the caches for DD2.
+ </description>
+ <chipEcFeature>
+ <chip>
+ <name>ENUM_ATTR_NAME_NIMBUS</name>
+ <ec>
+ <value>0x20</value>
+ <test>LESS_THAN_OR_EQUAL</test>
+ </ec>
+ </chip>
+ </chipEcFeature>
+ </attribute>
+ <!-- ******************************************************************** -->
+ <attribute>
<id>ATTR_CHIP_EC_FEATURE_DISABLE_CP_ME</id>
<targetType>TARGET_TYPE_PROC_CHIP</targetType>
<description>
diff --git a/src/import/chips/p9/procedures/xml/attribute_info/nest_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/nest_attributes.xml
index ac99a027..37f88976 100644
--- a/src/import/chips/p9/procedures/xml/attribute_info/nest_attributes.xml
+++ b/src/import/chips/p9/procedures/xml/attribute_info/nest_attributes.xml
@@ -1347,6 +1347,21 @@
<persistRuntime/>
<initToZero/>
</attribute>
+<!-- ******************************************************************** -->
+<attribute>
+ <id>ATTR_ENABLE_MEM_EARLY_DATA_SCOM</id>
+ <targetType>TARGET_TYPE_SYSTEM</targetType>
+ <description>
+ Enable early data from Memory. This also enable cp_me from L3.
+ </description>
+ <valueType>uint8</valueType>
+ <enum>
+ OFF = 0x0,
+ ON = 0x1
+ </enum>
+ <platInit/>
+ <initToZero/>
+</attribute>
<!-- ********************************************************************** -->
</attributes>
diff --git a/src/import/chips/p9/procedures/xml/attribute_info/p9_sbe_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/p9_sbe_attributes.xml
index dcb1a3ca..81583e27 100644
--- a/src/import/chips/p9/procedures/xml/attribute_info/p9_sbe_attributes.xml
+++ b/src/import/chips/p9/procedures/xml/attribute_info/p9_sbe_attributes.xml
@@ -557,4 +557,8 @@ attribute tank
<name>ATTR_FABRIC_ADDR_EXTENSION_CHIP_ID</name>
<value>0x00</value>
</entry>
+ <entry>
+ <name>ATTR_ENABLE_MEM_EARLY_DATA_SCOM</name>
+ <value>0x0</value>
+ </entry>
</entries>
OpenPOWER on IntegriCloud