|
5 | 5 | /* */
|
6 | 6 | /* OpenPOWER HostBoot Project */
|
7 | 7 | /* */
|
8 |
| -/* Contributors Listed Below - COPYRIGHT 2016,2019 */ |
| 8 | +/* Contributors Listed Below - COPYRIGHT 2016,2020 */ |
9 | 9 | /* [+] International Business Machines Corp. */
|
10 | 10 | /* */
|
11 | 11 | /* */
|
@@ -713,6 +713,8 @@ extern "C"
|
713 | 713 | {
|
714 | 714 |
|
715 | 715 | // 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 |
716 | 718 | FAPI_ASSERT( ( !io_vpdInfo.iv_is_config_ffdc_enabled ),
|
717 | 719 | fapi2::DDIMM_GET_EFD_UNSUPPORTED_FREQUENCY().
|
718 | 720 | set_UNSUPPORTED_FREQ(static_cast<uint32_t>
|
@@ -753,6 +755,8 @@ extern "C"
|
753 | 755 | if ( !l_rankMask)
|
754 | 756 | {
|
755 | 757 | // 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 |
756 | 760 | FAPI_ASSERT( ( !io_vpdInfo.iv_is_config_ffdc_enabled ),
|
757 | 761 | fapi2::DDIMM_GET_EFD_UNSUPPORTED_RANK().
|
758 | 762 | set_UNSUPPORTED_RANK(static_cast<uint32_t>
|
@@ -794,18 +798,30 @@ extern "C"
|
794 | 798 | l_supportedSpeeds = *reinterpret_cast<const uint16_t*>
|
795 | 799 | (i_spdBuffer + SPD_SUPPORTED_HOST_SPEEDS_ADDR);
|
796 | 800 | 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 ); |
808 | 801 |
|
| 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 | + } |
809 | 825 |
|
810 | 826 | // Point to the beginning of the EFD meta data, AKA EFD[0] meta data.
|
811 | 827 | l_efdMetaDataPtr = i_spdBuffer + SPD_EFD_META_DATA_ADDR;
|
@@ -927,6 +943,8 @@ extern "C"
|
927 | 943 | {
|
928 | 944 | // Did not find an EFD to match frequency and master rank criteria
|
929 | 945 | // 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 |
930 | 948 | FAPI_ASSERT( ( !io_vpdInfo.iv_is_config_ffdc_enabled ),
|
931 | 949 | fapi2::DDIMM_GET_EFD_EFD_NOT_FOUND().
|
932 | 950 | set_FREQUENCY(io_vpdInfo.iv_omi_freq_mhz).
|
|
0 commit comments