summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C
diff options
context:
space:
mode:
authorGreg Still <stillgs@us.ibm.com>2017-07-06 13:41:16 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-08-04 10:44:58 -0400
commit1b9910cea325b42cf0dadd071b30d648dc7092da (patch)
tree55bc32919c6b49a5ba64fbfff6fa0132f76dece9 /src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C
parent390fd421b3e8b679d5582824a0fac9a93e37f476 (diff)
downloadtalos-hostboot-1b9910cea325b42cf0dadd071b30d648dc7092da.tar.gz
talos-hostboot-1b9910cea325b42cf0dadd071b30d648dc7092da.zip
PM: no EQ (eg no core) support
- disables Pstates due to lack of #V VPD - Doesn't start Pstates in AUTO mode - Fixed in setup evid procedure related to same issue - rebased Change-Id: I6f52b5d968e3f66da8c9d33067424bebd333d587 CQ:SW390516 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43083 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: BRIAN D. VICTOR <brian.d.victor1@ibm.com> Reviewed-by: RAHUL BATRA <rbatra@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43085 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+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/pm/p9_setup_evid.C')
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C223
1 files changed, 126 insertions, 97 deletions
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C b/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C
index fe046ef53..46dc285a9 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C
@@ -214,112 +214,123 @@ avsInitAttributes(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target,
DATABLOCK_GET_ATTR(ATTR_PROC_R_DISTLOSS_VCS_UOHM, i_target, attrs->r_distloss_vcs_uohm);
DATABLOCK_GET_ATTR(ATTR_PROC_VRM_VOFFSET_VCS_UV, i_target, attrs->vrm_voffset_vcs_uv);
- //We only wish to compute voltage setting defaults if the action
- //inputed to the HWP tells us to
- if(i_action == COMPUTE_VOLTAGE_SETTINGS)
+ do
{
- // query VPD if any of the voltage attributes are zero
- if (!attrs->vdd_voltage_mv ||
- !attrs->vcs_voltage_mv ||
- !attrs->vdn_voltage_mv)
- {
- uint8_t l_poundv_bucketId = 0;
- fapi2::voltageBucketData_t l_poundv_data;
- // Get #V data from MVPD for VDD/VDN and VCS voltage values
- FAPI_TRY(proc_get_mvpd_data(i_target,
- attr_mvpd_data,
- &valid_pdv_points,
- &present_chiplets,
- l_poundv_bucketId,
- &l_poundv_data,
- &l_state ));
-
- // set VDD voltage to PowerSave Voltage from MVPD data (if no override)
- if (attrs->vdd_voltage_mv)
- {
- FAPI_INF("VDD boot voltage override set.");
- }
- else
- {
- FAPI_INF("VDD boot voltage override not set, using VPD value and correcting for applicable load line setting");
- uint32_t vpd_vdd_voltage_mv = attr_mvpd_data[POWERSAVE][VPD_PV_VDD_MV];
- attrs->vdd_voltage_mv =
- ( (vpd_vdd_voltage_mv * 1000) + // uV
- ( ( (attr_mvpd_data[POWERSAVE][VPD_PV_IDD_100MA] / 10) * // A
- (attrs->r_loadline_vdd_uohm + attrs->r_distloss_vdd_uohm)) + // uohm -> A*uohm = uV
- attrs->vrm_voffset_vdd_uv )) / 1000; // mV
-
- FAPI_INF("VDD VPD voltage %d mV; Corrected voltage: %d mV; IDD: %d mA; LoadLine: %d uOhm; DistLoss: %d uOhm; Offst: %d uOhm",
- vpd_vdd_voltage_mv,
- attrs->vdd_voltage_mv,
- attr_mvpd_data[POWERSAVE][VPD_PV_IDD_100MA] * 100,
- attrs->r_loadline_vdd_uohm,
- attrs->r_distloss_vdd_uohm,
- attrs->vrm_voffset_vdd_uv);
-
- FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_VDD_BOOT_VOLTAGE, i_target, attrs->vdd_voltage_mv),
- "Error from FAPI_ATTR_SET (ATTR_VDD_BOOT_VOLTAGE)");
- }
-
- // set VCS voltage to UltraTurbo Voltage from MVPD data (if no override)
- if (attrs->vcs_voltage_mv)
- {
- FAPI_INF("VCS boot voltage override set.");
- }
- else
- {
- FAPI_INF("VCS boot voltage override not set, using VPD value and correcting for applicable load line setting");
- uint32_t vpd_vcs_voltage_mv = attr_mvpd_data[POWERSAVE][VPD_PV_VCS_MV];
- attrs->vcs_voltage_mv =
- ( (vpd_vcs_voltage_mv * 1000) + // uV
- ( ( (attr_mvpd_data[POWERSAVE][VPD_PV_ICS_100MA] / 10) * // A
- (attrs->r_loadline_vcs_uohm + attrs->r_distloss_vcs_uohm)) + // uohm -> A*uohm = uV
- attrs->vrm_voffset_vcs_uv )) / 1000; // mV
-
- FAPI_INF("VCS VPD voltage %d mV; Corrected voltage: %d mV; IDD: %d mA; LoadLine: %d uOhm; DistLoss: %d uOhm; Offst: %d uOhm",
- vpd_vcs_voltage_mv,
- attrs->vcs_voltage_mv,
- attr_mvpd_data[POWERSAVE][VPD_PV_ICS_100MA] * 100,
- attrs->r_loadline_vcs_uohm,
- attrs->r_distloss_vcs_uohm,
- attrs->vrm_voffset_vcs_uv);
-
- FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_VCS_BOOT_VOLTAGE, i_target, attrs->vcs_voltage_mv),
- "Error from FAPI_ATTR_SET (ATTR_VCS_BOOT_VOLTAGE)");
- }
- // set VDN voltage to PowerSave Voltage from MVPD data (if no override)
- if (attrs->vdn_voltage_mv)
+ //We only wish to compute voltage setting defaults if the action
+ //inputed to the HWP tells us to
+ if(i_action == COMPUTE_VOLTAGE_SETTINGS)
+ {
+ // query VPD if any of the voltage attributes are zero
+ if (!attrs->vdd_voltage_mv ||
+ !attrs->vcs_voltage_mv ||
+ !attrs->vdn_voltage_mv)
{
- FAPI_INF("VDN boot voltage override set");
+ uint8_t l_poundv_bucketId = 0;
+ fapi2::voltageBucketData_t l_poundv_data;
+ // Get #V data from MVPD for VDD/VDN and VCS voltage values
+ FAPI_TRY(proc_get_mvpd_data(i_target,
+ attr_mvpd_data,
+ &valid_pdv_points,
+ &present_chiplets,
+ l_poundv_bucketId,
+ &l_poundv_data,
+ &l_state ));
+
+ if (!present_chiplets)
+ {
+ FAPI_IMP("**** WARNING : There are no EQ chiplets present which means there is no valid #V VPD");
+ break;
+ }
+
+ // set VDD voltage to PowerSave Voltage from MVPD data (if no override)
+ if (attrs->vdd_voltage_mv)
+ {
+ FAPI_INF("VDD boot voltage override set.");
+ }
+ else
+ {
+ FAPI_INF("VDD boot voltage override not set, using VPD value and correcting for applicable load line setting");
+ uint32_t vpd_vdd_voltage_mv = attr_mvpd_data[POWERSAVE][VPD_PV_VDD_MV];
+ attrs->vdd_voltage_mv =
+ ( (vpd_vdd_voltage_mv * 1000) + // uV
+ ( ( (attr_mvpd_data[POWERSAVE][VPD_PV_IDD_100MA] / 10) * // A
+ (attrs->r_loadline_vdd_uohm + attrs->r_distloss_vdd_uohm)) + // uohm -> A*uohm = uV
+ attrs->vrm_voffset_vdd_uv )) / 1000; // mV
+
+ FAPI_INF("VDD VPD voltage %d mV; Corrected voltage: %d mV; IDD: %d mA; LoadLine: %d uOhm; DistLoss: %d uOhm; Offst: %d uOhm",
+ vpd_vdd_voltage_mv,
+ attrs->vdd_voltage_mv,
+ attr_mvpd_data[POWERSAVE][VPD_PV_IDD_100MA] * 100,
+ attrs->r_loadline_vdd_uohm,
+ attrs->r_distloss_vdd_uohm,
+ attrs->vrm_voffset_vdd_uv);
+
+ FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_VDD_BOOT_VOLTAGE, i_target, attrs->vdd_voltage_mv),
+ "Error from FAPI_ATTR_SET (ATTR_VDD_BOOT_VOLTAGE)");
+ }
+
+ // set VCS voltage to UltraTurbo Voltage from MVPD data (if no override)
+ if (attrs->vcs_voltage_mv)
+ {
+ FAPI_INF("VCS boot voltage override set.");
+ }
+ else
+ {
+ FAPI_INF("VCS boot voltage override not set, using VPD value and correcting for applicable load line setting");
+ uint32_t vpd_vcs_voltage_mv = attr_mvpd_data[POWERSAVE][VPD_PV_VCS_MV];
+ attrs->vcs_voltage_mv =
+ ( (vpd_vcs_voltage_mv * 1000) + // uV
+ ( ( (attr_mvpd_data[POWERSAVE][VPD_PV_ICS_100MA] / 10) * // A
+ (attrs->r_loadline_vcs_uohm + attrs->r_distloss_vcs_uohm)) + // uohm -> A*uohm = uV
+ attrs->vrm_voffset_vcs_uv )) / 1000; // mV
+
+ FAPI_INF("VCS VPD voltage %d mV; Corrected voltage: %d mV; IDD: %d mA; LoadLine: %d uOhm; DistLoss: %d uOhm; Offst: %d uOhm",
+ vpd_vcs_voltage_mv,
+ attrs->vcs_voltage_mv,
+ attr_mvpd_data[POWERSAVE][VPD_PV_ICS_100MA] * 100,
+ attrs->r_loadline_vcs_uohm,
+ attrs->r_distloss_vcs_uohm,
+ attrs->vrm_voffset_vcs_uv);
+
+ FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_VCS_BOOT_VOLTAGE, i_target, attrs->vcs_voltage_mv),
+ "Error from FAPI_ATTR_SET (ATTR_VCS_BOOT_VOLTAGE)");
+ }
+
+ // set VDN voltage to PowerSave Voltage from MVPD data (if no override)
+ if (attrs->vdn_voltage_mv)
+ {
+ FAPI_INF("VDN boot voltage override set");
+ }
+ else
+ {
+ FAPI_INF("VDN boot voltage override not set, using VPD value and correcting for applicable load line setting");
+ uint32_t vpd_vdn_voltage_mv = attr_mvpd_data[POWERBUS][VPD_PV_VDN_MV];
+ attrs->vdn_voltage_mv =
+ ( (vpd_vdn_voltage_mv * 1000) + // uV
+ ( ( (attr_mvpd_data[POWERBUS][VPD_PV_IDN_100MA] / 10) * // A
+ (attrs->r_loadline_vdn_uohm + attrs->r_distloss_vdn_uohm)) + // uohm -> A*uohm = uV
+ attrs->vrm_voffset_vdn_uv )) / 1000; // mV
+
+ FAPI_INF("VDN VPD voltage %d mV; Corrected voltage: %d mV; IDN: %d mA; LoadLine: %d uOhm; DistLoss: %d uOhm; Offst: %d uOhm",
+ vpd_vdn_voltage_mv,
+ attrs->vdn_voltage_mv,
+ attr_mvpd_data[POWERBUS][VPD_PV_IDN_100MA] * 100,
+ attrs->r_loadline_vdn_uohm,
+ attrs->r_distloss_vdn_uohm,
+ attrs->vrm_voffset_vdn_uv);
+
+ FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_VDN_BOOT_VOLTAGE, i_target, attrs->vdn_voltage_mv),
+ "Error from FAPI_ATTR_SET (ATTR_VDN_BOOT_VOLTAGE)");
+ }
}
else
{
- FAPI_INF("VDN boot voltage override not set, using VPD value and correcting for applicable load line setting");
- uint32_t vpd_vdn_voltage_mv = attr_mvpd_data[POWERBUS][VPD_PV_VDN_MV];
- attrs->vdn_voltage_mv =
- ( (vpd_vdn_voltage_mv * 1000) + // uV
- ( ( (attr_mvpd_data[POWERBUS][VPD_PV_IDN_100MA] / 10) * // A
- (attrs->r_loadline_vdn_uohm + attrs->r_distloss_vdn_uohm)) + // uohm -> A*uohm = uV
- attrs->vrm_voffset_vdn_uv )) / 1000; // mV
-
- FAPI_INF("VDN VPD voltage %d mV; Corrected voltage: %d mV; IDN: %d mA; LoadLine: %d uOhm; DistLoss: %d uOhm; Offst: %d uOhm",
- vpd_vdn_voltage_mv,
- attrs->vdn_voltage_mv,
- attr_mvpd_data[POWERBUS][VPD_PV_IDN_100MA] * 100,
- attrs->r_loadline_vdn_uohm,
- attrs->r_distloss_vdn_uohm,
- attrs->vrm_voffset_vdn_uv);
-
- FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_VDN_BOOT_VOLTAGE, i_target, attrs->vdn_voltage_mv),
- "Error from FAPI_ATTR_SET (ATTR_VDN_BOOT_VOLTAGE)");
+ FAPI_INF("Using override for all boot voltages (VDD/VCS/VDN)");
}
}
- else
- {
- FAPI_INF("Using override for all boot voltages (VDD/VCS/VDN)");
- }
}
+ while(0);
// trace values to be used
FAPI_INF("VDD boot voltage = %d mV (0x%x)",
@@ -371,6 +382,12 @@ p9_setup_evid(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, const
// initialize the AVS slave on VDD bus
FAPI_TRY(avsIdleFrame(i_target, attrs.vdd_bus_num, BRIDGE_NUMBER));
+ if (!attrs.vdd_voltage_mv)
+ {
+ FAPI_IMP("VDD voltage value is zero,so we can't set boot voltage");
+ break;
+ }
+
// Set Boot VDD Voltage
FAPI_TRY(avsVoltageWrite(i_target,
attrs.vdd_bus_num,
@@ -400,6 +417,12 @@ p9_setup_evid(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, const
// VDN bus
FAPI_TRY(avsIdleFrame(i_target, attrs.vdn_bus_num, BRIDGE_NUMBER));
+ if (!attrs.vdn_voltage_mv)
+ {
+ FAPI_IMP("VDN voltage value is zero,so we can't set boot voltage");
+ break;
+ }
+
// Set Boot VDN Voltage
FAPI_TRY(avsVoltageWrite(i_target,
attrs.vdn_bus_num,
@@ -436,6 +459,12 @@ p9_setup_evid(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, const
// VCS bus
FAPI_TRY(avsIdleFrame(i_target, attrs.vcs_bus_num, BRIDGE_NUMBER));
+ if (!attrs.vcs_voltage_mv)
+ {
+ FAPI_IMP("VCS voltage value is zero,so we can't set boot voltage");
+ break;
+ }
+
// Set Boot VCS voltage
FAPI_TRY(avsVoltageWrite(i_target,
attrs.vcs_bus_num,
OpenPOWER on IntegriCloud