diff options
author | Luke Mulkey <lwmulkey@us.ibm.com> | 2017-11-15 14:46:24 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-02-06 23:40:01 -0500 |
commit | 14ae2496088dc9b1f233c53ec18f5b3910a0007e (patch) | |
tree | 740e6caf9d7e1f5d468b9f414222f7bd2ff29c20 | |
parent | 1d565299ec312208104cdaf80f63ab5a2e49eb98 (diff) | |
download | talos-hostboot-14ae2496088dc9b1f233c53ec18f5b3910a0007e.tar.gz talos-hostboot-14ae2496088dc9b1f233c53ec18f5b3910a0007e.zip |
Add ddr4 mnfg info to attributes during spd collection
Change-Id: I5ff9f1d8d6f7896a4eb5ee3edb9f3e5406d659df
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49753
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Dev-Ready: LUCAS W. MULKEY <lwmulkey@us.ibm.com>
Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/50213
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r-- | src/import/chips/centaur/procedures/hwp/memory/p9c_mss_attr_cleanup.C | 93 | ||||
-rw-r--r-- | src/import/chips/centaur/procedures/xml/attribute_info/dimm_spd_vpd_attributes.xml | 35 |
2 files changed, 91 insertions, 37 deletions
diff --git a/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_attr_cleanup.C b/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_attr_cleanup.C index 29acdb082..63a5d8a53 100644 --- a/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_attr_cleanup.C +++ b/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_attr_cleanup.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2017 */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -118,14 +118,15 @@ enum factory_byte_offset MODULE_ID_MODULE_SERIAL_NUMBER_BYTE3 = 327, MODULE_ID_MODULE_SERIAL_NUMBER_BYTE4 = 328, MODULE_PART_NUMBER = 329, // 329-348 + MODULE_PART_NUMBER_LENGTH_IN_BYTES = 20, MODULE_REVISION_CODE = 349, DRAM_MANUFACTURER_JEDEC_ID_CODE_LSB = 350, DRAM_MANUFACTURER_JEDEC_ID_CODE_MSB = 351, DRAM_STEPPING_DDR4 = 352, - DRAM_STEPPING_DDR4_LSB = 382, - DRAM_STEPPING_DDR4_MSB = 383 + CRC_MNFG_SEC_DDR4_LSB = 382, + CRC_MNFG_SEC_DDR4_MSB = 383 }; //------------------------------------------------------------------------------ @@ -152,6 +153,7 @@ p9c_mss_attr_cleanup(const fapi2::Target<TARGET_TYPE_DIMM>& i_dimm) uint8_t l_spd_byte4 = 0; uint8_t l_work_byte = 0; uint8_t l_work2_byte = 0; + uint8_t l_module_pn[MODULE_PART_NUMBER_LENGTH_IN_BYTES] = {0}; uint32_t l_work_word = 0; // DQ SPD Attribute uint8_t l_dqData[DIMM_DQ_SPD_DATA_SIZE] {0}; @@ -435,17 +437,102 @@ p9c_mss_attr_cleanup(const fapi2::Target<TARGET_TYPE_DIMM>& i_dimm) FAPI_INF("Set ATTR_CEN_SPD_FINE_OFFSET_TAAMIN 0x%X ", l_spd_byte1); // FINE_OFFSET_TCKMAX_DDR4 = 124 + l_spd_byte1 = l_spd[FINE_OFFSET_TCKMAX_DDR4]; + FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_FINE_OFFSET_TCKMAX_DDR4, i_dimm, l_spd_byte1), + "Failed to set ATTR_CEN_SPD_FINE_OFFSET_TCKMAX_DDR4" ); + FAPI_INF("Set ATTR_CEN_SPD_FINE_OFFSET_TCKMAX_DDR4 0x%X ", l_spd_byte1); + // FINE_OFFSET_TCKMIN = 125 l_spd_byte1 = l_spd[FINE_OFFSET_TCKMIN]; FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_FINE_OFFSET_TCKMIN, i_dimm, l_spd_byte1), "Failed to set ATTR_CEN_SPD_FINE_OFFSET_TCKMIN" ); FAPI_INF("Set ATTR_CEN_SPD_FINE_OFFSET_TCKMIN 0x%X ", l_spd_byte1); + //ADDR_MAP_REG_TO_DRAM = 136 l_spd_byte1 = l_spd[ADDR_MAP_REG_TO_DRAM]; FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_ADDR_MAP_REG_TO_DRAM, i_dimm, l_spd_byte1), "Failed to set ATTR_CEN_SPD_ADDR_MAP_REG_TO_DRAM"); FAPI_INF("Set ATTR_CEN_SPD_ADDR_MAP_REG_TO_DRAM 0x%X ", l_spd_byte1); + //MODULE_ID_MODULE_MANUFACTURERS_JEDEC_ID_CODE_LOW = 320 + //MODULE_ID_MODULE_MANUFACTURERS_JEDEC_ID_CODE_HIGH = 321 + l_spd_byte1 = l_spd[MODULE_ID_MODULE_MANUFACTURERS_JEDEC_ID_CODE_HIGH]; + l_spd_byte2 = l_spd[MODULE_ID_MODULE_MANUFACTURERS_JEDEC_ID_CODE_LOW]; + l_work_word = (l_spd_byte1 << 8) | l_spd_byte2; + FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURERS_JEDEC_ID_CODE, i_dimm, l_work_word), + "Failed to set ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURERS_JEDEC_ID_CODE"); + FAPI_INF("Set ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURERS_JEDEC_ID_CODE 0x%X ", l_spd_byte1); + + //MODULE_ID_MODULE_MANUFACTURING_LOCATION = 322 + l_spd_byte1 = l_spd[MODULE_ID_MODULE_MANUFACTURING_LOCATION]; + FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURING_LOCATION, i_dimm, l_spd_byte1), + "Failed to set ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURING_LOCATION"); + FAPI_INF("Set ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURING_LOCATION 0x%X ", l_spd_byte1); + + //MODULE_ID_MODULE_MANUFACTURING_DATE_YEAR = 323 + //MODULE_ID_MODULE_MANUFACTURING_DATE_WEEK = 324 (LSB) + l_spd_byte1 = l_spd[MODULE_ID_MODULE_MANUFACTURING_DATE_YEAR]; + l_spd_byte2 = l_spd[MODULE_ID_MODULE_MANUFACTURING_DATE_WEEK]; + l_work_word = (l_spd_byte1 << 8) | l_spd_byte2; + FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURING_DATE, i_dimm, l_work_word), + "Failed to set ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURING_DATE"); + FAPI_INF("Set ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURING_DATE 0x%X ", l_work_word); + + //MODULE_ID_MODULE_SERIAL_NUMBER_BYTE1 = 325 (LSB) + //MODULE_ID_MODULE_SERIAL_NUMBER_BYTE2 = 326 + //MODULE_ID_MODULE_SERIAL_NUMBER_BYTE3 = 327 + //MODULE_ID_MODULE_SERIAL_NUMBER_BYTE4 = 328 + l_spd_byte1 = l_spd[MODULE_ID_MODULE_SERIAL_NUMBER_BYTE1]; + l_spd_byte2 = l_spd[MODULE_ID_MODULE_SERIAL_NUMBER_BYTE2]; + l_spd_byte3 = l_spd[MODULE_ID_MODULE_SERIAL_NUMBER_BYTE3]; + l_spd_byte4 = l_spd[MODULE_ID_MODULE_SERIAL_NUMBER_BYTE4]; + l_work_word = (l_spd_byte4 << 24) | (l_spd_byte3 << 16) | (l_spd_byte2 << 8) | l_spd_byte1; + FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_MODULE_ID_MODULE_SERIAL_NUMBER, i_dimm, l_work_word), + "Failed to set ATTR_CEN_SPD_MODULE_ID_MODULE_SERIAL_NUMBER"); + FAPI_INF("Set ATTR_CEN_SPD_MODULE_ID_MODULE_SERIAL_NUMBER 0x%X ", l_work_word); + + //MODULE_PART_NUMBER = 329:348 + for (uint16_t l_byte = 0; l_byte < MODULE_PART_NUMBER_LENGTH_IN_BYTES; l_byte++) + { + l_module_pn[l_byte] = l_spd[l_byte + MODULE_PART_NUMBER]; + } + + FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_MODULE_PART_NUMBER, i_dimm, l_module_pn), + "Failed to set ATTR_CEN_SPD_MODULE_PART_NUMBER"); + FAPI_INF("Set ATTR_CEN_SPD_MODULE_PART_NUMBER 0x%X ", l_module_pn[0]); + + + //MODULE_REVISION_CODE = 349 + l_spd_byte1 = l_spd[MODULE_REVISION_CODE]; + FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_MODULE_REVISION_CODE_DDR4, i_dimm, l_spd_byte1), + "Failed to set ATTR_CEN_SPD_MODULE_REVISION_CODE_DDR4"); + FAPI_INF("Set ATTR_CEN_SPD_MODULE_REVISION_CODE_DDR4 0x%X ", l_spd_byte1); + + + //DRAM_MANUFACTURER_JEDEC_ID_CODE_LSB = 350 + //DRAM_MANUFACTURER_JEDEC_ID_CODE_MSB = 351 + l_spd_byte1 = l_spd[DRAM_MANUFACTURER_JEDEC_ID_CODE_LSB]; + l_spd_byte2 = l_spd[DRAM_MANUFACTURER_JEDEC_ID_CODE_MSB]; + l_work_word = (l_spd_byte2 << 8) | l_spd_byte1; + FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_DRAM_MANUFACTURER_JEDEC_ID_CODE, i_dimm, l_work_word), + "Failed to set ATTR_CEN_SPD_DRAM_MANUFACTURER_JEDEC_ID_CODE"); + FAPI_INF("Set ATTR_CEN_SPD_DRAM_MANUFACTURER_JEDEC_ID_CODE 0x%X ", l_work_word); + + //DRAM_STEPPING_DDR4 = 352 + l_spd_byte1 = l_spd[DRAM_STEPPING_DDR4]; + FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_DRAM_STEPPING_DDR4, i_dimm, l_spd_byte1), + "Failed to set ATTR_CEN_SPD_DRAM_STEPPING_DDR4"); + FAPI_INF("Set ATTR_CEN_SPD_DRAM_STEPPING_DDR4 0x%X ", l_spd_byte1); + + //CRC_MNFG_SEC_DDR4_LSB = 382 + //CRC_MNFG_SEC_DDR4_MSB = 383 + l_spd_byte1 = l_spd[CRC_MNFG_SEC_DDR4_LSB]; + l_spd_byte2 = l_spd[CRC_MNFG_SEC_DDR4_MSB]; + l_work_word = (l_spd_byte2 << 8) | l_spd_byte1; + FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_CRC_MNFG_SEC_DDR4, i_dimm, l_work_word), + "Failed to set ATTR_CEN_SPD_CRC_MNFG_SEC_DDR4"); + FAPI_INF("Set ATTR_CEN_SPD_CRC_MNFG_SEC_DDR4 0x%X ", l_work_word); + // Reset ATTR_CEN_SPD_BAD_DQ_DATA FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_CEN_SPD_BAD_DQ_DATA, i_dimm, l_dqData), "Failed to set ATTR_CEN_SPD_BAD_DQ_DATA" ); diff --git a/src/import/chips/centaur/procedures/xml/attribute_info/dimm_spd_vpd_attributes.xml b/src/import/chips/centaur/procedures/xml/attribute_info/dimm_spd_vpd_attributes.xml index e51635049..9088d49be 100644 --- a/src/import/chips/centaur/procedures/xml/attribute_info/dimm_spd_vpd_attributes.xml +++ b/src/import/chips/centaur/procedures/xml/attribute_info/dimm_spd_vpd_attributes.xml @@ -493,7 +493,6 @@ The following attributes can be queried from both DDR3 and DDR4 DIMMs </attribute> --> -<!-- <attribute> <id>ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURERS_JEDEC_ID_CODE</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -505,9 +504,7 @@ The following attributes can be queried from both DDR3 and DDR4 DIMMs <valueType>uint32</valueType> <writeable/> </attribute> ---> -<!-- <attribute> <id>ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURING_LOCATION</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -519,9 +516,7 @@ The following attributes can be queried from both DDR3 and DDR4 DIMMs <valueType>uint8</valueType> <writeable/> </attribute> ---> -<!-- <attribute> <id>ATTR_CEN_SPD_MODULE_ID_MODULE_MANUFACTURING_DATE</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -533,9 +528,7 @@ The following attributes can be queried from both DDR3 and DDR4 DIMMs <valueType>uint32</valueType> <writeable/> </attribute> ---> -<!-- <attribute> <id>ATTR_CEN_SPD_MODULE_ID_MODULE_SERIAL_NUMBER</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -547,7 +540,6 @@ The following attributes can be queried from both DDR3 and DDR4 DIMMs <valueType>uint32</valueType> <writeable/> </attribute> ---> <!-- <attribute> @@ -561,8 +553,6 @@ The following attributes can be queried from both DDR3 and DDR4 DIMMs <writeable/> </attribute> --> - -<!-- <attribute> <id>ATTR_CEN_SPD_MODULE_PART_NUMBER</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -572,12 +562,10 @@ The following attributes can be queried from both DDR3 and DDR4 DIMMs Located in DDR4 SPD bytes 329 - 348. </description> <valueType>uint8</valueType> - <array>18</array> + <array>20</array> <writeable/> </attribute> ---> -<!-- <attribute> <id>ATTR_CEN_SPD_MODULE_REVISION_CODE</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -592,9 +580,7 @@ The following attributes can be queried from both DDR3 and DDR4 DIMMs <valueType>uint32</valueType> <writeable/> </attribute> ---> -<!-- <attribute> <id>ATTR_CEN_SPD_DRAM_MANUFACTURER_JEDEC_ID_CODE</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -606,7 +592,6 @@ The following attributes can be queried from both DDR3 and DDR4 DIMMs <valueType>uint32</valueType> <writeable/> </attribute> ---> <attribute> <id>ATTR_CEN_SPD_BAD_DQ_DATA</id> @@ -1104,7 +1089,6 @@ The following attributes can be queried from DDR4 DIMMs only Querying them from DDR3 DIMMs will result in an error ******************************************************************************* --> -<!-- <attribute> <id>ATTR_CEN_SPD_SDRAM_BANKGROUPS_DDR4</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -1116,7 +1100,6 @@ Querying them from DDR3 DIMMs will result in an error <enum>BG0 = 0x00, BG2 = 0x01, BG4 = 0x02</enum> <writeable/> </attribute> ---> <attribute> <id>ATTR_CEN_SPD_TIMEBASE_MTB_DDR4</id> @@ -1235,7 +1218,6 @@ Querying them from DDR3 DIMMs will result in an error <writeable/> </attribute> -<!-- <attribute> <id>ATTR_CEN_SPD_FINE_OFFSET_TCCDLMIN_DDR4</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -1249,9 +1231,7 @@ Querying them from DDR3 DIMMs will result in an error <valueType>uint8</valueType> <writeable/> </attribute> ---> -<!-- <attribute> <id>ATTR_CEN_SPD_FINE_OFFSET_TRRDLMIN_DDR4</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -1265,9 +1245,7 @@ Querying them from DDR3 DIMMs will result in an error <valueType>uint8</valueType> <writeable/> </attribute> ---> -<!-- <attribute> <id>ATTR_CEN_SPD_FINE_OFFSET_TRRDSMIN_DDR4</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -1281,9 +1259,7 @@ Querying them from DDR3 DIMMs will result in an error <valueType>uint8</valueType> <writeable/> </attribute> ---> -<!-- <attribute> <id>ATTR_CEN_SPD_FINE_OFFSET_TCKMAX_DDR4</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -1294,9 +1270,7 @@ Querying them from DDR3 DIMMs will result in an error <valueType>uint8</valueType> <writeable/> </attribute> ---> -<!-- <attribute> <id>ATTR_CEN_SPD_CRC_BASE_CONFIG_DDR4</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -1307,9 +1281,7 @@ Querying them from DDR3 DIMMs will result in an error <valueType>uint32</valueType> <writeable/> </attribute> ---> -<!-- <attribute> <id>ATTR_CEN_SPD_DRAM_STEPPING_DDR4</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -1323,9 +1295,7 @@ Querying them from DDR3 DIMMs will result in an error <valueType>uint8</valueType> <writeable/> </attribute> ---> -<!-- <attribute> <id>ATTR_CEN_SPD_CRC_MNFG_SEC_DDR4</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -1336,7 +1306,6 @@ Querying them from DDR3 DIMMs will result in an error <valueType>uint32</valueType> <writeable/> </attribute> ---> <attribute> <id>ATTR_CEN_VPD_VERSION</id> @@ -1831,7 +1800,6 @@ that handles the DDR neutral attribute. </attribute> --> -<!-- <attribute> <id>ATTR_CEN_SPD_MODULE_REVISION_CODE_DDR4</id> <targetType>TARGET_TYPE_DIMM</targetType> @@ -1844,7 +1812,6 @@ that handles the DDR neutral attribute. <valueType>uint8</valueType> <writeable/> </attribute> ---> <!-- ******************************************************************************* |