summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf
diff options
context:
space:
mode:
authorAndres Lugo-Reyes <aalugore@us.ibm.com>2015-08-24 16:45:40 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-09-18 19:29:43 -0500
commit66569e88a40376b4881bef6c23df411380c8f367 (patch)
tree4141e0d70aac8329f4c942d13f0cb9f2215340f6 /src/usr/hwpf
parent4baaa4fcd39593ea8a387b3c64f8ec3c028cf008 (diff)
downloadtalos-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.C5
-rw-r--r--src/usr/hwpf/hwp/edi_ei_initialization/edi_ei_initialization.C37
-rw-r--r--src/usr/hwpf/hwp/slave_sbe/slave_sbe.C11
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");
OpenPOWER on IntegriCloud