summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/lib
diff options
context:
space:
mode:
authorJoe McGill <jmcgill@us.ibm.com>2016-09-09 08:48:26 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-09-24 16:07:35 -0400
commit8e70eadd39c78d24897317df926746518ddd2de5 (patch)
treef92c4468643189762864a258d83a4849371602dc /src/import/chips/p9/procedures/hwp/lib
parentb7ef219d889fa2831d293e1aad9275270bc995af (diff)
downloadtalos-hostboot-8e70eadd39c78d24897317df926746518ddd2de5.tar.gz
talos-hostboot-8e70eadd39c78d24897317df926746518ddd2de5.zip
p9_setup_evid -- adjust voltage computation policy
drive boot voltages directly from attributes, if set allows for user/platform override if desired, independent from VPD VPD access will be skipped entirely if all rail attributes are set Change-Id: Ic13399e05852651368dd9915559e11a85bdf6977 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29417 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Joseph J. McGill <jmcgill@us.ibm.com> Reviewed-by: Thi N. Tran <thi@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30094 Reviewed-by: Hostboot Team <hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/lib')
-rw-r--r--src/import/chips/p9/procedures/hwp/lib/p9_pstate_parameter_block.C18
-rw-r--r--src/import/chips/p9/procedures/hwp/lib/p9_pstate_parameter_block.H4
2 files changed, 10 insertions, 12 deletions
diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_pstate_parameter_block.C b/src/import/chips/p9/procedures/hwp/lib/p9_pstate_parameter_block.C
index 678e285fa..b7b40a9a1 100644
--- a/src/import/chips/p9/procedures/hwp/lib/p9_pstate_parameter_block.C
+++ b/src/import/chips/p9/procedures/hwp/lib/p9_pstate_parameter_block.C
@@ -154,7 +154,7 @@ p9_pstate_parameter_block( const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_
// clear MVPD array
memset(attr_mvpd_voltage_control, 0, sizeof(attr_mvpd_voltage_control));
- FAPI_TRY(proc_get_mvpd_data( i_target, &attr, attr_mvpd_voltage_control, &valid_pdv_points, &present_chiplets),
+ FAPI_TRY(proc_get_mvpd_data( i_target, attr_mvpd_voltage_control, &valid_pdv_points, &present_chiplets),
"Get MVPD #V data failed");
if (!present_chiplets)
@@ -1178,7 +1178,6 @@ return fapi2::current_err;
fapi2::ReturnCode
proc_get_mvpd_data(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target,
- const AttributeList* i_attr,
uint32_t o_attr_mvpd_data[PV_D][PV_W],
uint32_t* o_valid_pdv_points,
uint8_t* o_present_chiplets
@@ -1286,7 +1285,6 @@ do
// bucket_id);
FAPI_TRY(proc_chk_valid_poundv( i_target,
- i_attr,
chiplet_mvpd_data,
o_valid_pdv_points,
l_chipNum,
@@ -1823,7 +1821,6 @@ return l_rc;
fapi2::ReturnCode
proc_chk_valid_poundv(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target,
- const AttributeList* i_attr,
const uint32_t i_chiplet_mvpd_data[PV_D][PV_W],
uint32_t* o_valid_pdv_points,
const uint8_t i_chiplet_num,
@@ -1834,10 +1831,14 @@ const uint8_t pv_op_order[VPD_PV_POINTS] = VPD_PV_ORDER;
const char* pv_op_str[VPD_PV_POINTS] = VPD_PV_ORDER_STR;
uint8_t i = 0;
bool suspend_ut_check = false;
+uint8_t l_attr_system_wof_enabled;
do
{
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_SYSTEM_WOF_ENABLED, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(),
+ l_attr_system_wof_enabled));
+
// check for non-zero freq, voltage, or current in valid operating points
for (i = 0; i <= VPD_PV_POINTS - 1; i++)
{
@@ -1849,7 +1850,7 @@ do
i_chiplet_mvpd_data[pv_op_order[i]][3],
i_chiplet_mvpd_data[pv_op_order[i]][4]);
- if (i_attr->attr_system_wof_enabled && (strcmp(pv_op_str[pv_op_order[i]], "UltraTurbo") == 0))
+ if (l_attr_system_wof_enabled && (strcmp(pv_op_str[pv_op_order[i]], "UltraTurbo") == 0))
{
if (i_chiplet_mvpd_data[pv_op_order[i]][0] == 0 ||
@@ -1871,7 +1872,7 @@ do
suspend_ut_check = true;
}
}
- else if ((!i_attr->attr_system_wof_enabled) && (strcmp(pv_op_str[pv_op_order[i]], "UltraTurbo") == 0))
+ else if ((!l_attr_system_wof_enabled) && (strcmp(pv_op_str[pv_op_order[i]], "UltraTurbo") == 0))
{
FAPI_INF("**** NOTE: WOF is disabled so the UltraTurbo VPD is not being checked");
suspend_ut_check = true;
@@ -1935,7 +1936,7 @@ do
i_chiplet_mvpd_data[pv_op_order[i]][3], i_chiplet_mvpd_data[pv_op_order[i - 1]][4],
i_chiplet_mvpd_data[pv_op_order[i]][4]);
- if (i_attr->attr_system_wof_enabled && strcmp(pv_op_str[pv_op_order[i]], "UltraTurbo") && !suspend_ut_check )
+ if (l_attr_system_wof_enabled && strcmp(pv_op_str[pv_op_order[i]], "UltraTurbo") && !suspend_ut_check )
{
if (i_chiplet_mvpd_data[pv_op_order[i - 1]][0] > i_chiplet_mvpd_data[pv_op_order[i]][0] ||
i_chiplet_mvpd_data[pv_op_order[i - 1]][1] > i_chiplet_mvpd_data[pv_op_order[i]][1] ||
@@ -1961,7 +1962,8 @@ do
}
while(0);
-return fapi2::FAPI2_RC_SUCCESS;
+fapi_try_exit:
+return fapi2::current_err;
}
#if 0
diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_pstate_parameter_block.H b/src/import/chips/p9/procedures/hwp/lib/p9_pstate_parameter_block.H
index d044e0777..c3d11b9a8 100644
--- a/src/import/chips/p9/procedures/hwp/lib/p9_pstate_parameter_block.H
+++ b/src/import/chips/p9/procedures/hwp/lib/p9_pstate_parameter_block.H
@@ -224,7 +224,6 @@ typedef struct
/// ----------------------------------------------------------------
/// @brief Get #V data and put into array
/// @param[i] i_target Chip Target
-/// @param[i] i_attr Attribute list
/// @param[o] o_attr_mvpd_data 5x5 array to hold the #V data
/// @param[o] o_valid_pdv_points No of Valid VPD points
/// @param[o] o_present_chiplets No of functional chiplets
@@ -232,14 +231,12 @@ typedef struct
/// ----------------------------------------------------------------
fapi2::ReturnCode
proc_get_mvpd_data ( const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target,
- const AttributeList* i_attr,
uint32_t o_attr_mvpd_data[PV_D][PV_W],
uint32_t* o_valid_pdv_points,
uint8_t* o_present_chiplets );
/// -------------------------------------------------------------------
/// @brief Perform data validity check on #V data
-/// @param[i] i_attr Attribute list
/// @param[i] i_chiplet_mvpd_data Pointer to array of #V data
/// @param[o] o_valid_pdv_points No of Valid VPD points
/// @param[o] i_chiplet_num Chiplet number
@@ -249,7 +246,6 @@ proc_get_mvpd_data ( const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target
fapi2::ReturnCode
proc_chk_valid_poundv ( const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target,
- const AttributeList* i_attr,
const uint32_t i_chiplet_mvpd_data[PV_D][PV_W],
uint32_t* o_valid_pdv_points,
const uint8_t i_chiplet_num,
OpenPOWER on IntegriCloud