summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRahul Batra <rbatra@us.ibm.com>2018-12-05 11:56:13 -0600
committerhostboot <hostboot@us.ibm.com>2019-01-25 19:24:14 -0600
commit9b0e0c73659f729e4728a5b772bda93fb7fb7be7 (patch)
tree63c8028ab3998aeb9b79b6cc44e20357232b537f
parent8e3228bf69fa908b4910d1f7367768b86a8583eb (diff)
downloadtalos-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>
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H4
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h6
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_pstates_common.h8
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_pstates_pgpe.h48
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];
OpenPOWER on IntegriCloud