summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps/istep07/call_mss_volt.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/isteps/istep07/call_mss_volt.C')
-rw-r--r--src/usr/isteps/istep07/call_mss_volt.C342
1 files changed, 192 insertions, 150 deletions
diff --git a/src/usr/isteps/istep07/call_mss_volt.C b/src/usr/isteps/istep07/call_mss_volt.C
index 7e0540257..be4192fd5 100644
--- a/src/usr/isteps/istep07/call_mss_volt.C
+++ b/src/usr/isteps/istep07/call_mss_volt.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2017 */
+/* Contributors Listed Below - COPYRIGHT 2015,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -61,6 +61,7 @@
// HWP
#include <p9_mss_volt.H>
#include <p9c_mss_volt.H>
+#include <p9c_mss_volt_vddr_offset.H>
namespace ISTEP_07
{
@@ -82,162 +83,203 @@ void* call_mss_volt( void *io_pArgs )
bool unused = false;
set_eff_config_attrs_helper(DEFAULT, unused);
- TARGETING::TargetHandleList l_membufTargetList;
+ TargetHandleList l_membufTargetList;
getAllChips(l_membufTargetList, TYPE_MEMBUF);
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_volt: %d membuf targets", l_membufTargetList.size());
-
- if (l_membufTargetList.size() > 0)
+ do
{
- std::vector< fapi2::Target<fapi2::TARGET_TYPE_MEMBUF_CHIP> > l_membufFapiTargetsList;
-
- for(auto & l_membuf_target : l_membufTargetList)
- {
- fapi2::Target <fapi2::TARGET_TYPE_MEMBUF_CHIP>
- l_membuf_fapi_target (l_membuf_target);
-
- l_membufFapiTargetsList.push_back( l_membuf_fapi_target );
- }
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Calling p9c_mss_volt on list of membuf targets");
-
- // p9c_mss_volt.C (vector of centaurs)
- FAPI_INVOKE_HWP(l_err, p9c_mss_volt, l_membufFapiTargetsList);
-
- // process return code
- if ( l_err )
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: p9c_mss_volt HWP() failed",
- l_err->reasonCode());
-
- // Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails(l_err);
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : p9c_mss_volt HWP");
- }
- }
- else
- {
- TARGETING::TargetHandleList l_mcsTargetList;
- getAllChiplets(l_mcsTargetList, TYPE_MCS);
-
- std::vector< fapi2::Target<fapi2::TARGET_TYPE_MCS> > l_mcsFapiTargetsList;
- for(auto & l_mcs_target : l_mcsTargetList)
- {
- fapi2::Target <fapi2::TARGET_TYPE_MCS>
- l_mcs_fapi_target (l_mcs_target);
+ "call_mss_volt: %d membuf targets", l_membufTargetList.size());
- l_mcsFapiTargetsList.push_back( l_mcs_fapi_target );
- }
+ if (l_membufTargetList.size() > 0)
+ {
+ std::vector< fapi2::Target<fapi2::TARGET_TYPE_MEMBUF_CHIP> >
+ l_membufFapiTargetsList;
+
+ for(auto & l_membuf_target : l_membufTargetList)
+ {
+ fapi2::Target <fapi2::TARGET_TYPE_MEMBUF_CHIP>
+ l_membuf_fapi_target (l_membuf_target);
+
+ l_membufFapiTargetsList.push_back( l_membuf_fapi_target );
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "Calling p9c_mss_volt on list of membuf targets");
+
+ // p9c_mss_volt.C (vector of centaurs)
+ FAPI_INVOKE_HWP(l_err, p9c_mss_volt, l_membufFapiTargetsList);
+
+ // process return code
+ if ( l_err )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: p9c_mss_volt HWP() failed",
+ l_err->reasonCode());
+
+ // Create IStep error log and cross reference to error
+ // that occurred
+ l_StepError.addErrorDetails(l_err);
+
+ // Commit Error
+ errlCommit( l_err, HWPF_COMP_ID );
+
+ break;
+
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : p9c_mss_volt HWP");
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "Calling p9c_mss_volt_vddr_offset on list of membuf targets");
+
+ // p9c_mss_volt_vddr_offset.C (vector of centaurs)
+ FAPI_INVOKE_HWP(l_err, p9c_mss_volt_vddr_offset,
+ l_membufFapiTargetsList);
+
+ // process return code
+ if ( l_err )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: p9c_mss_volt_vddr_offset HWP() failed",
+ l_err->reasonCode());
+
+ // Create IStep error log and cross reference to error
+ // that occurred
+ l_StepError.addErrorDetails(l_err);
+
+ // Commit Error
+ errlCommit( l_err, HWPF_COMP_ID );
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : p9c_mss_volt_vddr_offset HWP");
+ }
+
+ }
+ else
+ {
+ TargetHandleList l_mcsTargetList;
+ getAllChiplets(l_mcsTargetList, TYPE_MCS);
+
+ std::vector< fapi2::Target<fapi2::TARGET_TYPE_MCS> >
+ l_mcsFapiTargetsList;
+
+ for(auto & l_mcs_target : l_mcsTargetList)
+ {
+ fapi2::Target <fapi2::TARGET_TYPE_MCS>
+ l_mcs_fapi_target (l_mcs_target);
+
+ l_mcsFapiTargetsList.push_back( l_mcs_fapi_target );
+ }
+
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "Calling p9_mss_volt on list of mcs targets");
+
+ FAPI_INVOKE_HWP(l_err, p9_mss_volt, l_mcsFapiTargetsList);
+
+ // process return code
+ if ( l_err )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: p9_mss_volt HWP() failed",
+ l_err->reasonCode());
+
+ // Create IStep error log and cross reference to error
+ // that occurred
+ l_StepError.addErrorDetails(l_err);
+
+ // Commit Error
+ errlCommit( l_err, HWPF_COMP_ID );
+ }
+ else
+ {
+ // No need to compute dynamic values if mss_volt failed
+
+ // Calculate Dynamic Offset voltages for each domain
+ Target* pSysTarget = NULL;
+ targetService().getTopLevelTarget(pSysTarget);
+ assert(
+ (pSysTarget != NULL),
+ "call_mss_volt: Code bug! System target was NULL.");
+
+ // only calculate if system supports dynamic voltage
+ if (pSysTarget->getAttr<ATTR_SUPPORTS_DYNAMIC_MEM_VOLT >() == 1)
+ {
+ l_err = computeDynamicMemoryVoltage<
+ ATTR_MSS_VDD_PROGRAM,
+ ATTR_VDD_ID>();
+ if(l_err)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%08X: computeDynamicMemoryVoltage for "
+ "VDD domain",
+ l_err->reasonCode());
+ l_StepError.addErrorDetails(l_err);
+ errlCommit(l_err,HWPF_COMP_ID);
+ }
+
+ l_err = computeDynamicMemoryVoltage<
+ ATTR_MSS_AVDD_PROGRAM,
+ ATTR_AVDD_ID>();
+ if(l_err)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%08X: computeDynamicMemoryVoltage for "
+ "AVDD domain",
+ l_err->reasonCode());
+ l_StepError.addErrorDetails(l_err);
+ errlCommit(l_err,HWPF_COMP_ID);
+ }
+
+ l_err = computeDynamicMemoryVoltage<
+ ATTR_MSS_VCS_PROGRAM,
+ ATTR_VCS_ID>();
+ if(l_err)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%08X: computeDynamicMemoryVoltage for "
+ "VCS domain",
+ l_err->reasonCode());
+ l_StepError.addErrorDetails(l_err);
+ errlCommit(l_err,HWPF_COMP_ID);
+ }
+
+ l_err = computeDynamicMemoryVoltage<
+ ATTR_MSS_VPP_PROGRAM,
+ ATTR_VPP_ID>();
+ if(l_err)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%08X: computeDynamicMemoryVoltage for "
+ "VPP domain",
+ l_err->reasonCode());
+ l_StepError.addErrorDetails(l_err);
+ errlCommit(l_err,HWPF_COMP_ID);
+ }
+
+ l_err = computeDynamicMemoryVoltage<
+ ATTR_MSS_VDDR_PROGRAM,
+ ATTR_VDDR_ID>();
+ if(l_err)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%08X: computeDynamicMemoryVoltage for "
+ "VDDR domain",
+ l_err->reasonCode());
+ l_StepError.addErrorDetails(l_err);
+ errlCommit(l_err,HWPF_COMP_ID);
+ }
+ }
+ }
+ }
+ }while(0);
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Calling p9_mss_volt on list of mcs targets");
-
- FAPI_INVOKE_HWP(l_err, p9_mss_volt, l_mcsFapiTargetsList);
-
- // process return code
- if ( l_err )
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: p9_mss_volt HWP() failed",
- l_err->reasonCode());
-
- // Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails(l_err);
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
- else
- {
- // No need to compute dynamic values if mss_volt failed
-
- // Calculate Dynamic Offset voltages for each domain
- TARGETING::Target* pSysTarget = NULL;
- TARGETING::targetService().getTopLevelTarget(pSysTarget);
- assert(
- (pSysTarget != NULL),
- "call_mss_volt: Code bug! System target was NULL.");
-
- // only calculate if system supports dynamic voltage
- if (pSysTarget->getAttr< TARGETING::ATTR_SUPPORTS_DYNAMIC_MEM_VOLT >() == 1)
- {
- l_err = computeDynamicMemoryVoltage<
- TARGETING::ATTR_MSS_VDD_PROGRAM,
- TARGETING::ATTR_VDD_ID>();
- if(l_err)
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%08X: computeDynamicMemoryVoltage for "
- "VDD domain",
- l_err->reasonCode());
- l_StepError.addErrorDetails(l_err);
- errlCommit(l_err,HWPF_COMP_ID);
- }
-
- l_err = computeDynamicMemoryVoltage<
- TARGETING::ATTR_MSS_AVDD_PROGRAM,
- TARGETING::ATTR_AVDD_ID>();
- if(l_err)
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%08X: computeDynamicMemoryVoltage for "
- "AVDD domain",
- l_err->reasonCode());
- l_StepError.addErrorDetails(l_err);
- errlCommit(l_err,HWPF_COMP_ID);
- }
-
- l_err = computeDynamicMemoryVoltage<
- TARGETING::ATTR_MSS_VCS_PROGRAM,
- TARGETING::ATTR_VCS_ID>();
- if(l_err)
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%08X: computeDynamicMemoryVoltage for "
- "VCS domain",
- l_err->reasonCode());
- l_StepError.addErrorDetails(l_err);
- errlCommit(l_err,HWPF_COMP_ID);
- }
-
- l_err = computeDynamicMemoryVoltage<
- TARGETING::ATTR_MSS_VPP_PROGRAM,
- TARGETING::ATTR_VPP_ID>();
- if(l_err)
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%08X: computeDynamicMemoryVoltage for "
- "VPP domain",
- l_err->reasonCode());
- l_StepError.addErrorDetails(l_err);
- errlCommit(l_err,HWPF_COMP_ID);
- }
-
- l_err = computeDynamicMemoryVoltage<
- TARGETING::ATTR_MSS_VDDR_PROGRAM,
- TARGETING::ATTR_VDDR_ID>();
- if(l_err)
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%08X: computeDynamicMemoryVoltage for "
- "VDDR domain",
- l_err->reasonCode());
- l_StepError.addErrorDetails(l_err);
- errlCommit(l_err,HWPF_COMP_ID);
- }
- }
- }
- }
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_volt exit" );
return l_StepError.getErrorHandle();
OpenPOWER on IntegriCloud