diff options
author | Rahul Batra <rbatra@us.ibm.com> | 2018-12-05 11:56:13 -0600 |
---|---|---|
committer | hostboot <hostboot@us.ibm.com> | 2019-01-25 19:24:14 -0600 |
commit | 9b0e0c73659f729e4728a5b772bda93fb7fb7be7 (patch) | |
tree | 63c8028ab3998aeb9b79b6cc44e20357232b537f | |
parent | 8e3228bf69fa908b4910d1f7367768b86a8583eb (diff) | |
download | talos-hcode-9b0e0c73659f729e4728a5b772bda93fb7fb7be7.tar.gz talos-hcode-9b0e0c73659f729e4728a5b772bda93fb7fb7be7.zip |
PGPE: WOV HW procs and Global Parm updates (2/3)
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>
4 files changed, 49 insertions, 17 deletions
diff --git a/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H b/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H index 295820dd..2e6f5c5a 100644 --- a/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H +++ b/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HCODE Project */ /* */ -/* COPYRIGHT 2015,2018 */ +/* COPYRIGHT 2015,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -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 diff --git a/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h b/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h index 0c2b87a6..28f71567 100644 --- a/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h +++ b/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HCODE Project */ /* */ -/* COPYRIGHT 2015,2017 */ +/* COPYRIGHT 2015,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -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 diff --git a/import/chips/p9/procedures/hwp/lib/p9_pstates_common.h b/import/chips/p9/procedures/hwp/lib/p9_pstates_common.h index f9ca0849..afed1488 100644 --- a/import/chips/p9/procedures/hwp/lib/p9_pstates_common.h +++ b/import/chips/p9/procedures/hwp/lib/p9_pstates_common.h @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HCODE Project */ /* */ -/* COPYRIGHT 2015,2018 */ +/* COPYRIGHT 2015,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -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 diff --git a/import/chips/p9/procedures/hwp/lib/p9_pstates_pgpe.h b/import/chips/p9/procedures/hwp/lib/p9_pstates_pgpe.h index b4b61021..ebddeaed 100644 --- a/import/chips/p9/procedures/hwp/lib/p9_pstates_pgpe.h +++ b/import/chips/p9/procedures/hwp/lib/p9_pstates_pgpe.h @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HCODE Project */ /* */ -/* COPYRIGHT 2015,2018 */ +/* COPYRIGHT 2015,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -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]; |