Skip to content

Commit

Permalink
PPB:Compute safe mode Freq and Volt calculation during runtime
Browse files Browse the repository at this point in the history
Change-Id: I66943612e85c59590d7cdf4270c9f4a27f7481eb
CQ:SW435482
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/61718
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Prem Shanker Jha <premjha2@in.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/61722
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: Christian R. Geddes <crgeddes@us.ibm.com>
Disable-CI: Christian R. Geddes <crgeddes@us.ibm.com>
  • Loading branch information
prasrang authored and crgeddes committed Jul 20, 2018
1 parent 9f49d11 commit 4f0098c
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 11 deletions.
10 changes: 10 additions & 0 deletions src/import/chips/p9/procedures/hwp/pm/p9_pm_pstate_gpe_init.C
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,8 @@ fapi2::ReturnCode pstate_gpe_reset(
uint32_t l_timeout_in_MS = 100;
std::vector<uint64_t> l_pgpe_base_addr;
l_pgpe_base_addr.push_back( PGPE_BASE_ADDRESS );
fapi2::ATTR_SAFE_MODE_FREQUENCY_MHZ_Type l_safe_mode_freq_mhz = 0;
fapi2::ATTR_SAFE_MODE_VOLTAGE_MV_Type l_safe_mode_mv = 0;


FAPI_IMP(">> pstate_gpe_reset...");
Expand Down Expand Up @@ -364,6 +366,14 @@ fapi2::ReturnCode pstate_gpe_reset(
l_data64.flush<0>().clearBit<p9hcd::PGPE_ACTIVE>();
FAPI_TRY(putScom(i_target, PU_OCB_OCI_OCCS2_SCOM, l_data64));


//Reset safe mode attributes
FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_SAFE_MODE_FREQUENCY_MHZ,
i_target, l_safe_mode_freq_mhz));
FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_SAFE_MODE_VOLTAGE_MV,
i_target, l_safe_mode_mv));


fapi_try_exit:
FAPI_IMP("<< pstate_gpe_reset...");
return fapi2::current_err;
Expand Down
44 changes: 33 additions & 11 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 @@ -659,18 +659,40 @@ p9_pstate_parameter_block( const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_
l_localppb.ext_biases[i] = l_vpdbias[i];
l_localppb.int_biases[i] = l_vpdbias[i];
}
if (!attr.attr_pm_safe_voltage_mv &&
!attr.attr_pm_safe_frequency_mhz)
{
uint8_t l_ps_pstate = 0;
Safe_mode_parameters l_safe_mode_values;
uint32_t l_ps_freq_khz =
l_operating_points[VPD_PT_SET_BIASED][POWERSAVE].frequency_mhz * 1000;
freq2pState(&l_globalppb, l_ps_freq_khz, &l_ps_pstate);
//Compute safe mode values
FAPI_TRY(p9_pstate_safe_mode_computation (
i_target,
l_operating_points,
revle32(l_globalppb.reference_frequency_khz),
revle32(l_globalppb.frequency_step_khz),
l_ps_pstate,
&l_safe_mode_values,
l_poundw_data),
"Error from p9_pstate_safe_mode_computation function");

// safe_voltage_mv
l_globalppb.safe_voltage_mv = revle32(attr.attr_pm_safe_voltage_mv);

// safe_frequency_khz
l_globalppb.safe_frequency_khz =
revle32(attr.attr_pm_safe_frequency_mhz * 1000);
FAPI_INF("Safe Mode Frequency %d (0x%X) kHz; Voltage %d (0x%X) mV",
revle32(l_globalppb.safe_frequency_khz),
revle32(l_globalppb.safe_frequency_khz),
revle32(l_globalppb.safe_voltage_mv),
revle32(l_globalppb.safe_voltage_mv));
}
else
{
// safe_voltage_mv
l_globalppb.safe_voltage_mv = revle32(attr.attr_pm_safe_voltage_mv);

// safe_frequency_khz
l_globalppb.safe_frequency_khz =
revle32(attr.attr_pm_safe_frequency_mhz * 1000);
FAPI_INF("Safe Mode Frequency %d (0x%X) kHz; Voltage %d (0x%X) mV",
revle32(l_globalppb.safe_frequency_khz),
revle32(l_globalppb.safe_frequency_khz),
revle32(l_globalppb.safe_voltage_mv),
revle32(l_globalppb.safe_voltage_mv));
}

// ----------------
// get Resonant clocking attributes
Expand Down

0 comments on commit 4f0098c

Please sign in to comment.