skylake: Set Pkg Power clamping bit in Power Limit MSR
Setting the Package Power clamping bits in Power Limit MSR (MSR_PKG_POWER_LIMIT 0x610) Allows going below the OS requested P or T state for the time window specified for PL1 or PL2. BRANCH=none BUG=chrome-os-partner:47041 TEST=Built and boot on kunimitsu, load the system with Aquarium WebGL, change the power limit value from default (TDP or 15W) to any lower value note that the Pkg power comes down and also the CPU frequency is lowered. Change-Id: I9c0dd90a6660214ae142418aae8b8c5f6a739896 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: b0b527991c2d26da5772700a22ff101eaf9993ef Original-Change-Id: Ia59fcfe2a14cd7f8b1e1b8e967073e67eb452f42 Original-Signed-off-by: Rizwan Qureshi <rizwan.qureshi@intel.com> Original-Reviewed-on: https://chromium-review.googlesource.com/309556 Original-Tested-by: Charulatha Varadarajan <charuprasanna@gmail.com> Original-Tested-by: Charulatha Varadarajan <charulatha.varadarajan@intel.com> Original-Reviewed-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: http://review.coreboot.org/12257 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
f86d035105
commit
0dd72e8b1d
|
@ -152,6 +152,10 @@ void set_power_limits(u8 power_limit_1_time)
|
||||||
/* Set long term power limit to TDP */
|
/* Set long term power limit to TDP */
|
||||||
limit.lo = 0;
|
limit.lo = 0;
|
||||||
limit.lo |= tdp & PKG_POWER_LIMIT_MASK;
|
limit.lo |= tdp & PKG_POWER_LIMIT_MASK;
|
||||||
|
|
||||||
|
/* Set PL1 Pkg Power clamp bit */
|
||||||
|
limit.lo |= PKG_POWER_LIMIT_CLAMP;
|
||||||
|
|
||||||
limit.lo |= PKG_POWER_LIMIT_EN;
|
limit.lo |= PKG_POWER_LIMIT_EN;
|
||||||
limit.lo |= (power_limit_1_val & PKG_POWER_LIMIT_TIME_MASK) <<
|
limit.lo |= (power_limit_1_val & PKG_POWER_LIMIT_TIME_MASK) <<
|
||||||
PKG_POWER_LIMIT_TIME_SHIFT;
|
PKG_POWER_LIMIT_TIME_SHIFT;
|
||||||
|
@ -159,6 +163,7 @@ void set_power_limits(u8 power_limit_1_time)
|
||||||
/* Set short term power limit to 1.25 * TDP */
|
/* Set short term power limit to 1.25 * TDP */
|
||||||
limit.hi = 0;
|
limit.hi = 0;
|
||||||
limit.hi |= ((tdp * 125) / 100) & PKG_POWER_LIMIT_MASK;
|
limit.hi |= ((tdp * 125) / 100) & PKG_POWER_LIMIT_MASK;
|
||||||
|
limit.hi |= PKG_POWER_LIMIT_CLAMP;
|
||||||
limit.hi |= PKG_POWER_LIMIT_EN;
|
limit.hi |= PKG_POWER_LIMIT_EN;
|
||||||
|
|
||||||
/* Power limit 2 time is only programmable on server SKU */
|
/* Power limit 2 time is only programmable on server SKU */
|
||||||
|
|
Loading…
Reference in New Issue