diff options
author | Andres Lugo-Reyes <aalugore@us.ibm.com> | 2015-08-24 16:45:40 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-09-18 19:29:43 -0500 |
commit | 66569e88a40376b4881bef6c23df411380c8f367 (patch) | |
tree | 4141e0d70aac8329f4c942d13f0cb9f2215340f6 /src/usr/hwpf | |
parent | 4baaa4fcd39593ea8a387b3c64f8ec3c028cf008 (diff) | |
download | talos-hostboot-66569e88a40376b4881bef6c23df411380c8f367.tar.gz talos-hostboot-66569e88a40376b4881bef6c23df411380c8f367.zip |
SBE Update Support for Adjusted Nest Frequency
This commit adds a check in istep 8.1 to see if the SBE Seeproms are
programmed with the same NEST_FREQ_MHZ attribute value that the system is
currently running at. If necessary, it will update the SBE Seeproms in this
step which might result in a re-IPL.
Change-Id: I1dca7196cd02a2704a238665b73b522c9e103936
RTC:133406
Depends-on:I9bba92f55f1b67ff4a15d79113f19d39272ec72d
Backport: release-fips840
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/20229
Tested-by: Jenkins Server
Tested-by: FSP CI Jenkins
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf')
-rw-r--r-- | src/usr/hwpf/hwp/activate_powerbus/activate_powerbus.C | 5 | ||||
-rw-r--r-- | src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C | 37 | ||||
-rw-r--r-- | src/usr/hwpf/hwp/slave_sbe/slave_sbe.C | 11 |
3 files changed, 41 insertions, 12 deletions
diff --git a/src/usr/hwpf/hwp/activate_powerbus/activate_powerbus.C b/src/usr/hwpf/hwp/activate_powerbus/activate_powerbus.C index 4cb1d3a91..642b53996 100644 --- a/src/usr/hwpf/hwp/activate_powerbus/activate_powerbus.C +++ b/src/usr/hwpf/hwp/activate_powerbus/activate_powerbus.C @@ -347,9 +347,12 @@ void * call_host_slave_sbe_update( void * io_pArgs ) do { + // Slave processors should now use Host I2C Access Method + I2C::i2cSetAccessMode( I2C::I2C_SET_ACCESS_MODE_PROC_HOST ); + // Reset I2C devices before trying to access the SBE SEEPROMs // Any error returned should not fail istep - l_errl = I2C::i2cResetActiveMasters( I2C::I2C_PROC_HOST ); + l_errl = I2C::i2cResetActiveMasters( I2C::I2C_PROC_ALL ); if (l_errl) { // Commit error and keep going diff --git a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C b/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C index ae02ad832..e1ab17db2 100644 --- a/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C +++ b/src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C @@ -5,7 +5,9 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2014 */ +/* Contributors Listed Below - COPYRIGHT 2012,2015 */ +/* [+] International Business Machines Corp. */ +/* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ @@ -53,6 +55,8 @@ #include <hwas/common/deconfigGard.H> #include <hwas/common/hwasCommon.H> +#include <sbe/sbeif.H> + // targeting support #include <targeting/common/commontargeting.H> #include <targeting/common/utilFilter.H> @@ -102,6 +106,35 @@ void* call_fabric_erepair( void *io_pArgs ) errlHndl_t l_errl = NULL; TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_fabric_erepair entry" ); + do { + + // Check if the system can support multiple nest frequencies + // and if so, see if an SBE Update is required + TARGETING::Target* l_sys = NULL; + targetService().getTopLevelTarget(l_sys); + assert( l_sys != NULL, "call_fabric_erepair: sys target is NULL" ); + MRW_NEST_CAPABLE_FREQUENCIES_SYS l_mrw_nest_capable; + l_mrw_nest_capable = + l_sys->getAttr<ATTR_MRW_NEST_CAPABLE_FREQUENCIES_SYS>(); + if ( l_mrw_nest_capable == + MRW_NEST_CAPABLE_FREQUENCIES_SYS_2000_MHZ_OR_2400_MHZ ) + { + // Call to check Processor SBE SEEPROM Images against NEST_FREQ_MHZ + // attributes and make any necessary updates + l_errl = SBE::updateProcessorSbeSeeproms( + SBE::SBE_UPDATE_ONLY_CHECK_NEST_FREQ); + + if (l_errl) + { + // Create IStep error log and cross reference error that occurred + l_StepError.addErrorDetails( l_errl ); + // Commit error + errlCommit( l_errl, HWPF_COMP_ID ); + break; + } + + } + std::vector<uint8_t> l_endp1_txFaillanes; std::vector<uint8_t> l_endp1_rxFaillanes; std::vector<uint8_t> l_endp2_txFaillanes; @@ -278,6 +311,8 @@ void* call_fabric_erepair( void *io_pArgs ) } // end for l_PbusConnections } // end for MaxBusSet + } while (0); + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_fabric_erepair exit" ); return l_StepError.getErrorHandle(); diff --git a/src/usr/hwpf/hwp/slave_sbe/slave_sbe.C b/src/usr/hwpf/hwp/slave_sbe/slave_sbe.C index c74402df3..949314433 100644 --- a/src/usr/hwpf/hwp/slave_sbe/slave_sbe.C +++ b/src/usr/hwpf/hwp/slave_sbe/slave_sbe.C @@ -194,6 +194,7 @@ void* call_host_slave_sbe_config(void *io_pArgs) errlCommit( err, HWPF_COMP_ID ); } + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_host_slave_sbe_config exit" ); @@ -616,16 +617,6 @@ void* call_proc_check_slave_sbe_seeprom_complete( void *io_pArgs ) } // endfor - // Slave processors should now use Host I2C Access Method - I2C::i2cSetAccessMode( I2C::I2C_SET_ACCESS_MODE_PROC_HOST ); - - // Reset the Processor's I2C Masters - l_errl = I2C::i2cResetActiveMasters(I2C::I2C_PROC_ALL); - if (l_errl) - { - // Commit error - errlCommit( l_errl, HWPF_COMP_ID ); - } TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "call_proc_check_slave_sbe_seeprom_complete exit"); |