Skip to content

Commit a9b71d9

Browse files
stermolecrgeddes
authored andcommitted
Don't assert from ddimm_get_efd for unsupported freq if ffdc_enabled not set
This will remove DDIMM_UNSUPPORTED_FREQUENCY errors from passing mss_freq trace Change-Id: I384282d61bc426cb903c560ea1eb242a47349b9c Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/89881 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Mark Pizzutillo <mark.pizzutillo@ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Dev-Ready: Louis Stermole <stermole@us.ibm.com> Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com> Reviewed-by: Jennifer A Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/89903 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: Christian R Geddes <crgeddes@us.ibm.com>
1 parent dc407ba commit a9b71d9

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

src/import/chips/p9/procedures/hwp/accessors/ddimm_get_efd.C

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/* */
66
/* OpenPOWER HostBoot Project */
77
/* */
8-
/* Contributors Listed Below - COPYRIGHT 2016,2019 */
8+
/* Contributors Listed Below - COPYRIGHT 2016,2020 */
99
/* [+] International Business Machines Corp. */
1010
/* */
1111
/* */
@@ -713,6 +713,8 @@ extern "C"
713713
{
714714

715715
// If no value for freq, then mapping of frequency was unsuccessful
716+
// Note we don't want to produce FFDC if the ffdc_enabled flag is not set
717+
// i.e. if we're just probing the EFD for its supported frequencies
716718
FAPI_ASSERT( ( !io_vpdInfo.iv_is_config_ffdc_enabled ),
717719
fapi2::DDIMM_GET_EFD_UNSUPPORTED_FREQUENCY().
718720
set_UNSUPPORTED_FREQ(static_cast<uint32_t>
@@ -753,6 +755,8 @@ extern "C"
753755
if ( !l_rankMask)
754756
{
755757
// If no value for MR, then mapping of MR was unsuccessful
758+
// Note we don't want to produce FFDC if the ffdc_enabled flag is not set
759+
// i.e. if we're just probing the EFD for its supported frequencies
756760
FAPI_ASSERT( ( !io_vpdInfo.iv_is_config_ffdc_enabled ),
757761
fapi2::DDIMM_GET_EFD_UNSUPPORTED_RANK().
758762
set_UNSUPPORTED_RANK(static_cast<uint32_t>
@@ -794,18 +798,30 @@ extern "C"
794798
l_supportedSpeeds = *reinterpret_cast<const uint16_t*>
795799
(i_spdBuffer + SPD_SUPPORTED_HOST_SPEEDS_ADDR);
796800
l_supportedSpeeds = le16toh(l_supportedSpeeds);
797-
FAPI_ASSERT( l_freqMask & l_supportedSpeeds,
798-
fapi2::DDIMM_UNSUPPORTED_FREQUENCY().
799-
set_UNSUPPORTED_FREQ(static_cast<uint32_t>
800-
(io_vpdInfo.iv_omi_freq_mhz)).
801-
set_SUPPORTED_FREQS(l_supportedSpeeds).
802-
set_OCMB_CHIP_TARGET(i_ocmbFapi2Target).
803-
set_VPD_TYPE(io_vpdInfo.iv_vpd_type).
804-
set_DDR_TYPE(static_cast<uint32_t>
805-
(i_spdBuffer[SPD_MEM_TYPE_ADDR])),
806-
"Invalid frequency for this DIMM - request=%d, supported mask=%.4X",
807-
io_vpdInfo.iv_omi_freq_mhz, l_supportedSpeeds );
808801

802+
if (!(l_freqMask & l_supportedSpeeds))
803+
{
804+
// Note we don't want to produce FFDC if the ffdc_enabled flag is not set
805+
// i.e. if we're just probing the EFD for its supported frequencies
806+
FAPI_ASSERT( !io_vpdInfo.iv_is_config_ffdc_enabled,
807+
fapi2::DDIMM_UNSUPPORTED_FREQUENCY().
808+
set_UNSUPPORTED_FREQ(static_cast<uint32_t>
809+
(io_vpdInfo.iv_omi_freq_mhz)).
810+
set_SUPPORTED_FREQS(l_supportedSpeeds).
811+
set_OCMB_CHIP_TARGET(i_ocmbFapi2Target).
812+
set_VPD_TYPE(io_vpdInfo.iv_vpd_type).
813+
set_DDR_TYPE(static_cast<uint32_t>
814+
(i_spdBuffer[SPD_MEM_TYPE_ADDR])),
815+
"Invalid frequency for this DIMM - request=%d, supported mask=%.4X",
816+
io_vpdInfo.iv_omi_freq_mhz, l_supportedSpeeds );
817+
818+
// If unable to collect FFDC and assert, at least trace out and exit with false
819+
FAPI_INF ("ddr4_get_efd: Unsupported frequency %d (frequency bit mask = 0x%.4X, "
820+
"supported mask = 0x%.4X)",
821+
io_vpdInfo.iv_omi_freq_mhz, l_freqMask, l_supportedSpeeds);
822+
823+
FAPI_TRY(fapi2::FAPI2_RC_FALSE);
824+
}
809825

810826
// Point to the beginning of the EFD meta data, AKA EFD[0] meta data.
811827
l_efdMetaDataPtr = i_spdBuffer + SPD_EFD_META_DATA_ADDR;
@@ -927,6 +943,8 @@ extern "C"
927943
{
928944
// Did not find an EFD to match frequency and master rank criteria
929945
// Collect FFDC and assert if iv_is_config_ffdc_enabled is true
946+
// Note we don't want to produce FFDC if the ffdc_enabled flag is not set
947+
// i.e. if we're just probing the EFD for its supported frequencies
930948
FAPI_ASSERT( ( !io_vpdInfo.iv_is_config_ffdc_enabled ),
931949
fapi2::DDIMM_GET_EFD_EFD_NOT_FOUND().
932950
set_FREQUENCY(io_vpdInfo.iv_omi_freq_mhz).

0 commit comments

Comments
 (0)