diff options
author | Joe McGill <jmcgill@us.ibm.com> | 2016-09-09 08:48:26 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-09-24 16:07:35 -0400 |
commit | 8e70eadd39c78d24897317df926746518ddd2de5 (patch) | |
tree | f92c4468643189762864a258d83a4849371602dc /src/import/chips/p9/procedures/hwp/lib | |
parent | b7ef219d889fa2831d293e1aad9275270bc995af (diff) | |
download | talos-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.C | 18 | ||||
-rw-r--r-- | src/import/chips/p9/procedures/hwp/lib/p9_pstate_parameter_block.H | 4 |
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, |