Skip to content

Commit

Permalink
PPB:Undervolting biasing: fix bug found in testing.
Browse files Browse the repository at this point in the history
Key_Cronus_Test=PM_REGRESS

RTC:203531
Change-Id: I900cb1d9a200e24845c349fa651ef40d3eb378a2
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/70332
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-by: RAHUL BATRA <rbatra@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/70450
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
  • Loading branch information
prasrang authored and dcrowell77 committed Jan 25, 2019
1 parent 71bc706 commit a3dae28
Showing 1 changed file with 25 additions and 7 deletions.
32 changes: 25 additions & 7 deletions src/import/chips/p9/procedures/hwp/pm/p9_pstate_parameter_block.C
Original file line number Diff line number Diff line change
Expand Up @@ -1747,10 +1747,18 @@ fapi_try_exit:
double
calc_bias(const int8_t i_value)
{
double temp = 1.0 + ((BIAS_PCT_UNIT/100) * (double)i_value);
FAPI_DBG(" calc_bias: input bias (in 1/2 percent) = %d; percent = %4.1f%% biased multiplier = %6.3f",
if (i_value)
{
double temp = 1.0 + ((BIAS_PCT_UNIT/100) * (double)i_value);
FAPI_DBG(" calc_bias: input bias (in 1/2 percent) = %d; percent = %4.1f%% biased multiplier = %6.3f",
i_value, (i_value*BIAS_PCT_UNIT), temp);
return temp;
return temp;
}
else
{
return 1;
}

}


Expand Down Expand Up @@ -3644,7 +3652,10 @@ proc_get_mvpd_poundw(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target
uint8_t bucket_id = 0;
uint8_t version_id = 0;
const uint16_t VDM_VOLTAGE_IN_MV = 512;
const uint16_t MIN_VDM_VOLTAGE_IN_MV = 576;
const uint16_t VDM_GRANULARITY = 4;
uint32_t l_vdm_compare_raw_mv[NUM_OP_POINTS];
uint32_t l_vdm_compare_biased_mv[NUM_OP_POINTS];

const char* pv_op_str[NUM_OP_POINTS] = PV_OP_ORDER_STR;

Expand Down Expand Up @@ -3845,11 +3856,11 @@ proc_get_mvpd_poundw(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target

for (int i = 0; i < NUM_OP_POINTS; ++i)
{
uint32_t l_mv = 512 + (o_data->poundw[i].vdm_vid_compare_ivid << 2);
l_vdm_compare_raw_mv[i] = VDM_VOLTAGE_IN_MV + (o_data->poundw[i].vdm_vid_compare_ivid << 2);
FAPI_INF("%10s vdm_vid_compare_ivid %3d => %d mv",
pv_op_str[i],
o_data->poundw[i].vdm_vid_compare_ivid,
l_mv);
l_vdm_compare_raw_mv[i]);
}

//Validation of VPD Data
Expand Down Expand Up @@ -3993,8 +4004,15 @@ proc_get_mvpd_poundw(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target
for (uint8_t i = 0; i < NUM_OP_POINTS; i++)
{
l_pound_w_points[i] = calc_bias(l_bias_value[i]);
o_data->poundw[i].vdm_vid_compare_ivid =
(uint32_t)(o_data->poundw[i].vdm_vid_compare_ivid * l_pound_w_points[i]);

l_vdm_compare_biased_mv[i] = internal_ceil( (l_vdm_compare_raw_mv[i] * l_pound_w_points[i]));

if (l_vdm_compare_biased_mv[i] < MIN_VDM_VOLTAGE_IN_MV)
{
l_vdm_compare_biased_mv[i] = MIN_VDM_VOLTAGE_IN_MV;
}

o_data->poundw[i].vdm_vid_compare_ivid = (l_vdm_compare_biased_mv[i] - VDM_VOLTAGE_IN_MV) >> 2;

FAPI_INF("vdm_vid_compare_ivid %x %x, %x",
o_data->poundw[i].vdm_vid_compare_ivid,
Expand Down

0 comments on commit a3dae28

Please sign in to comment.