From 371ca0eb55aeee32899d9296ed69c00a39e2fe64 Mon Sep 17 00:00:00 2001 From: Caleb Palmer Date: Thu, 1 Feb 2018 09:55:43 -0600 Subject: Add attribute for row repair data Change-Id: I1bbbe901afa73b30dde43927c363ee724af4525d RTC: 174670 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52438 Tested-by: FSP CI Jenkins Tested-by: Jenkins Server Tested-by: HWSV CI Reviewed-by: Benjamin J Weisenbeck Reviewed-by: Brian J Stegmiller Reviewed-by: Zane C Shelley Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52708 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Daniel M. Crowell --- .../hwp/memory/lib/mss_attribute_accessors.H | 32 ++++++++++++++++++++++ .../procedures/hwp/memory/lib/shared/mss_const.H | 1 + .../xml/attribute_info/memory_spd_attributes.xml | 23 +++++++++++++++- 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H b/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H index d24cbea29..47fbf0e2b 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H @@ -20650,6 +20650,38 @@ fapi_try_exit: return fapi2::current_err; } +/// +/// @brief ATTR_ROW_REPAIR_DATA getter +/// @param[in] const ref to the TARGET_TYPE_DIMM +/// @param[out] uint8_t* memory to store the value +/// @note Generated by gen_accessors.pl generateParameters (PROC_CHIP) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Row Repair Data for a DIMM target. Data for 4 master ranks * 32 bits per row +/// repair Each row repair contains: -5 bits: DRAM position (x8: 0-9, x4: 0-19) -3 +/// bits: slave ranks (0-7) -2 bits: bank group (0-3) -3 bits: bank (0-7) -18 bits: +/// row -1 bits: +/// unused +/// +inline fapi2::ReturnCode row_repair_data(const fapi2::Target& i_target, uint8_t* o_array) +{ + if (o_array == nullptr) + { + FAPI_ERR("nullptr passed to attribute accessor %s", __func__); + return fapi2::FAPI2_RC_INVALID_PARAMETER; + } + + uint8_t l_value[4][4]; + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_ROW_REPAIR_DATA, i_target, l_value) ); + memcpy(o_array, &l_value, 16); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_ROW_REPAIR_DATA: 0x%lx", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + /// /// @brief ATTR_MSS_MRW_SAFEMODE_MEM_THROTTLED_N_COMMANDS_PER_PORT getter diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H b/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H index 1958501e3..cee0e9b84 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/shared/mss_const.H @@ -77,6 +77,7 @@ enum sizes MARK_STORE_COUNT = 8, ///< Elements in a VPD mark/store array BAD_DQ_BYTE_COUNT = 10, ///< Elements in a BAD_DQ_BITMAP attribute array + ROW_REPAIR_BYTE_COUNT = 4, ///< Elements in a ROW_REPAIR_DATA attribute array. BYTES_PER_GB = 1000000000, ///< Multiplier to go from GB to B T_PER_MT = 1000000, ///< Multiplier to go from MT/s to T/s diff --git a/src/import/chips/p9/procedures/xml/attribute_info/memory_spd_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/memory_spd_attributes.xml index 10bbf9e59..b2a022ac6 100755 --- a/src/import/chips/p9/procedures/xml/attribute_info/memory_spd_attributes.xml +++ b/src/import/chips/p9/procedures/xml/attribute_info/memory_spd_attributes.xml @@ -5,7 +5,7 @@ - + @@ -689,4 +689,25 @@ eff_nibble_map + + ATTR_ROW_REPAIR_DATA + TARGET_TYPE_DIMM + + Row Repair Data for a DIMM target. + Data for 4 master ranks * 32 bits per row repair + Each row repair contains: + -5 bits: DRAM position (x8: 0-9, x4: 0-19) + -3 bits: slave ranks (0-7) + -2 bits: bank group (0-3) + -3 bits: bank (0-7) + -18 bits: row + -1 bits: unused + + + uint8 + + 4 4 + row_repair_data + + -- cgit v1.2.3