Skip to content

Commit

Permalink
PGPE: WOV HW procs and Global Parm updates (2/3)
Browse files Browse the repository at this point in the history
    2nd commit in the series of 3 commits for Workload Optimized
    Voltage(WOV)

    Commit 1. Adds WOV attributes
    Commit 2(Hostboot). WOV HW procedures changes and global parm updates
    Commit 3(Hcode). PGPE Hcode changes for WOV(undervolting only) feature

    Key_Cronus_Test=PM_REGRESS

HW-Image-Prereq: Iaad4fb8cdff7840ec971f866757492f6e9b2cb87
CMVC-Prereq: 1073981
Change-Id: I07f716f5d12809b8c6efdf76bf545e467cf839d8
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69464
Tested-by: HWSV CI <hwsv-ci+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>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
  • Loading branch information
rbatraAustinIBM authored and op-jenkins committed Jan 26, 2019
1 parent 8e3228b commit 9b0e0c7
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 17 deletions.
4 changes: 3 additions & 1 deletion import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HCODE Project */
/* */
/* COPYRIGHT 2015,2018 */
/* COPYRIGHT 2015,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -558,6 +558,8 @@ HCD_CONST(PGPE_FLAG_WOF_IPC_IMMEDIATE_MODE, 0x0040)
HCD_CONST(PGPE_FLAG_ENABLE_FRATIO, 0x0020)
HCD_CONST(PGPE_FLAG_ENABLE_VRATIO, 0x0010)
HCD_CONST(PGPE_FLAG_VRATIO_MODIFIER, 0x0008)
HCD_CONST(PGPE_FLAG_WOV_UNDERVOLT_ENABLE, 0x0004)
HCD_CONST(PGPE_FLAG_WOV_OVERVOLT_ENABLE, 0x0002)
HCD_CONST(PGPE_FLAG_PHANTOM_HALT_ENABLE, 0x0001)

/// PGPE Hcode
Expand Down
6 changes: 4 additions & 2 deletions import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HCODE Project */
/* */
/* COPYRIGHT 2015,2017 */
/* COPYRIGHT 2015,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -191,8 +191,10 @@ typedef struct
{
poundw_entry_t poundw[NUM_OP_POINTS];
resistance_entry_t resistance_data;
uint8_t undervolt_tested;
uint8_t reserved;
uint64_t reserved1;
uint16_t reserved2;
uint8_t reserved2; //This field was added to keep the size of struct same when undervolt_tested field was added
} PoundW_data;

/// VDM/Droop Parameter Block
Expand Down
8 changes: 1 addition & 7 deletions import/chips/p9/procedures/hwp/lib/p9_pstates_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HCODE Project */
/* */
/* COPYRIGHT 2015,2018 */
/* COPYRIGHT 2015,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -150,12 +150,6 @@ typedef enum
#define VPD_PV_VDN_MV 1
#define VPD_PV_IDN_100MA 2

//Remove this. RTC: 174743
#define VPD_NUM_SLOPES_SET 2
#define VPD_SLOPES_RAW 0
#define VPD_SLOPES_BIASED 1
//Remove until here. RTC: 174743

#define VPD_NUM_SLOPES_REGION 3
#define REGION_POWERSAVE_NOMINAL 0
#define REGION_NOMINAL_TURBO 1
Expand Down
48 changes: 41 additions & 7 deletions import/chips/p9/procedures/hwp/lib/p9_pstates_pgpe.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HCODE Project */
/* */
/* COPYRIGHT 2015,2018 */
/* COPYRIGHT 2015,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -278,13 +278,47 @@ typedef struct
/// Nest frequency in Mhz. This is used by FIT interrupt
uint32_t nest_frequency_mhz;

/// Precalculated Pstate-Voltage Slopes
/// \todo Remove this. RTC: 174743
uint16_t PsVSlopes[VPD_NUM_SLOPES_SET][VPD_NUM_SLOPES_REGION];
//Maximum performance loss threshold when undervolting(in 0.1%, tenths of percent)
uint8_t wov_underv_perf_loss_thresh_pct;

/// Precalculated Voltage-Pstates Slopes
/// \todo Remove this. RTC: 174743
uint16_t VPsSlopes[VPD_NUM_SLOPES_SET][VPD_NUM_SLOPES_REGION];
//WOV undervolting increment percentage(in 0.1%, tenths of percent)
uint8_t wov_underv_step_incr_pct;

//WOV undervolting decrement percentage(in 0.1%, tenths of percent)
uint8_t wov_underv_step_decr_pct;

//WOV undervolting max percentage(in 0.1%, tenths of percent)
uint8_t wov_underv_max_pct;

//When undervolting, if this value is non-zero, then voltage will never be set
//below this value. If it is zero, then the minimum voltage is only bounded by
//wov_underv_max_pct.
uint16_t wov_underv_vmin_mv;

//When overvolting, then voltage will never be set above this value
uint16_t wov_overv_vmax_mv;

//WOV overvolting increment percentage(in 0.1%, tenths of percent)
uint8_t wov_overv_step_incr_pct;

//WOV overvolting decrement percentage(in 0.1%, tenths of percent)
uint8_t wov_overv_step_decr_pct;

//WOV overvolting max percentage(in 0.1%, tenths of percent)
uint8_t wov_overv_max_pct;

uint8_t pad;

//Determine how often to call the wov algorithm with respect
//to PGPE FIT ticks
uint32_t wov_sample_125us;

//Maximum performance loss(in 0.1%, tenths of percent). We should never be at
//this level, but we check using this value inside PGPE to make sure that this
//is reported if it ever happens
uint32_t wov_max_droop_pct;

uint32_t pad1;

/// All operating points
VpdOperatingPoint operating_points_set[NUM_VPD_PTS_SET][NUM_OP_POINTS];
Expand Down

0 comments on commit 9b0e0c7

Please sign in to comment.