summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCyrIng <labs@cyring.fr>2021-05-16 02:00:52 +0200
committerCyrIng <labs@cyring.fr>2021-05-16 02:00:52 +0200
commit72bc79033c7846fac4b613ad9f7a56de94d386fc (patch)
tree3bfd3a839cfa7b0630e0c277ae479aad99f037a5
parent1d4f6b0053d38eccfe365ee6d85fe2bbaf539283 (diff)
parentc952d14083c32a838dd8496fbac25622de80d8c2 (diff)
Version 1.85 hotfix1.85
-rw-r--r--corefreq-cli-rsc.c8
-rw-r--r--corefreq-cli-rsc.h17
-rw-r--r--corefreq-cli.c84
-rw-r--r--corefreqk.c12
-rw-r--r--coretypes.h2
-rw-r--r--intelmsr.h2
6 files changed, 76 insertions, 49 deletions
diff --git a/corefreq-cli-rsc.c b/corefreq-cli-rsc.c
index 24ec39a..c3d58bf 100644
--- a/corefreq-cli-rsc.c
+++ b/corefreq-cli-rsc.c
@@ -2721,6 +2721,14 @@ RESOURCE_ST Resource[] = {
RSC_BOX_PL1_DESC_CODE_FR),
[RSC_BOX_PL2_DESC] = LDT( RSC_BOX_PL2_DESC_CODE_EN,
RSC_BOX_PL2_DESC_CODE_FR),
+ [RSC_BOX_PWR_OFFSET0] = LDQ( RSC_BOX_PWR_OFFSET0_CODE),
+ [RSC_BOX_PWR_OFFSET1] = LDQ( RSC_BOX_PWR_OFFSET1_CODE),
+ [RSC_BOX_PWR_OFFSET2] = LDQ( RSC_BOX_PWR_OFFSET2_CODE),
+ [RSC_BOX_PWR_OFFSET3] = LDQ( RSC_BOX_PWR_OFFSET3_CODE),
+ [RSC_BOX_PWR_OFFSET4] = LDQ( RSC_BOX_PWR_OFFSET4_CODE),
+ [RSC_BOX_PWR_OFFSET5] = LDQ( RSC_BOX_PWR_OFFSET5_CODE),
+ [RSC_BOX_PWR_OFFSET6] = LDQ( RSC_BOX_PWR_OFFSET6_CODE),
+ [RSC_BOX_PWR_OFFSET7] = LDQ( RSC_BOX_PWR_OFFSET7_CODE),
[RSC_BOX_TOOLS_TITLE] = LDT( RSC_BOX_TOOLS_TITLE_CODE_EN,
RSC_BOX_TOOLS_TITLE_CODE_FR),
[RSC_BOX_TOOLS_STOP_BURN]=LDT( RSC_BOX_TOOLS_STOP_CODE_EN,
diff --git a/corefreq-cli-rsc.h b/corefreq-cli-rsc.h
index 01a8353..09a0474 100644
--- a/corefreq-cli-rsc.h
+++ b/corefreq-cli-rsc.h
@@ -1222,6 +1222,14 @@ enum {
RSC_BOX_TDP_PLATFORM_TITLE,
RSC_BOX_PL1_DESC,
RSC_BOX_PL2_DESC,
+ RSC_BOX_PWR_OFFSET0,
+ RSC_BOX_PWR_OFFSET1,
+ RSC_BOX_PWR_OFFSET2,
+ RSC_BOX_PWR_OFFSET3,
+ RSC_BOX_PWR_OFFSET4,
+ RSC_BOX_PWR_OFFSET5,
+ RSC_BOX_PWR_OFFSET6,
+ RSC_BOX_PWR_OFFSET7,
RSC_BOX_TOOLS_TITLE,
RSC_BOX_TOOLS_STOP_BURN,
RSC_BOX_TOOLS_ATOMIC_BURN,
@@ -3100,6 +3108,15 @@ extern RESOURCE_ST Resource[];
#define RSC_BOX_CFG_TDP_BLANK_CODE " "
+#define RSC_BOX_PWR_OFFSET0_CODE " +50 watts "
+#define RSC_BOX_PWR_OFFSET1_CODE " +10 watts "
+#define RSC_BOX_PWR_OFFSET2_CODE " +5 watts "
+#define RSC_BOX_PWR_OFFSET3_CODE " +1 watt "
+#define RSC_BOX_PWR_OFFSET4_CODE " -1 watt "
+#define RSC_BOX_PWR_OFFSET5_CODE " -5 watts "
+#define RSC_BOX_PWR_OFFSET6_CODE " -10 watts "
+#define RSC_BOX_PWR_OFFSET7_CODE " -50 watts "
+
#define RSC_BOX_IDLE_LIMIT_RESET_CODE " 0 RESET "
#define RSC_LOGO_R0 " ______ ______ "
diff --git a/corefreq-cli.c b/corefreq-cli.c
index 680aa71..6a1169d 100644
--- a/corefreq-cli.c
+++ b/corefreq-cli.c
@@ -3767,25 +3767,32 @@ REASON_CODE SysInfoPwrThermal(Window *win, CUINT width, CELL_FUNC OutFunc)
bix = Shm->Proc.Power.Domain[pw].Feature[PL1].Enable
| Shm->Proc.Power.Domain[pw].Feature[PL2].Enable;
- GridCall( PUT( (BOXKEY_TDP_OR | pw),
+ GridCall( PUT( Shm->Proc.Features.TDP_Unlock ?
+ (BOXKEY_TDP_OR | pw) : SCANKEY_NULL,
attrib[ bix ? 3 : 1 ], width, 2,
- "%s%.*s%s <%7s>",
+ "%s%.*s%s %c%7s%c",
RSC(POWER_THERMAL_TDP).CODE(),
width - 15 - RSZ(POWER_THERMAL_TDP)
- label[pw].size,
hSpace, label[pw].code,
- bix ? RSC(ENABLE).CODE():RSC(DISABLE).CODE() ),
+ Shm->Proc.Features.TDP_Unlock ? '<' : '[',
+ bix ? RSC(ENABLE).CODE():RSC(DISABLE).CODE(),
+ Shm->Proc.Features.TDP_Unlock ? '>' : ']' ),
TDP_State, pw );
if (Shm->Proc.Power.Domain[pw].PL1 > 0) {
- GridCall( PUT( (BOXKEY_TDP_OR | pw), attrib[5], width, 3,
- "%s (%2.0f sec)%.*s%s <%5u W>",
+ GridCall( PUT( Shm->Proc.Features.TDP_Unlock ?
+ (BOXKEY_TDP_OR | pw) : SCANKEY_NULL,
+ attrib[5], width, 3,
+ "%s (%2.0f sec)%.*s%s %c%5u W%c",
RSC(POWER_THERMAL_TPL).CODE(),
Shm->Proc.Power.Domain[pw].TW1,
width - (OutFunc == NULL ? 30 : 28)
- RSZ(POWER_THERMAL_TPL), hSpace,
RSC(POWER_LABEL_PL1).CODE(),
- Shm->Proc.Power.Domain[pw].PL1 ),
+ Shm->Proc.Features.TDP_Unlock ? '<' : '[',
+ Shm->Proc.Power.Domain[pw].PL1,
+ Shm->Proc.Features.TDP_Unlock ? '>' : ']' ),
PL1_Update, pw );
} else {
PUT( SCANKEY_NULL, attrib[0], width, 3,
@@ -3797,14 +3804,18 @@ REASON_CODE SysInfoPwrThermal(Window *win, CUINT width, CELL_FUNC OutFunc)
if (pw == PWR_DOMAIN(PKG) || pw == PWR_DOMAIN(PLATFORM))
{
if (Shm->Proc.Power.Domain[pw].PL2 > 0) {
- GridCall( PUT( (BOXKEY_TDP_OR | pw), attrib[5], width, 3,
- "%s (%2.0f sec)%.*s%s <%5u W>",
+ GridCall( PUT( Shm->Proc.Features.TDP_Unlock ?
+ (BOXKEY_TDP_OR | pw) : SCANKEY_NULL,
+ attrib[5], width, 3,
+ "%s (%2.0f sec)%.*s%s %c%5u W%c",
RSC(POWER_THERMAL_TPL).CODE(),
Shm->Proc.Power.Domain[pw].TW2,
width - (OutFunc == NULL ? 30 : 28)
- RSZ(POWER_THERMAL_TPL), hSpace,
RSC(POWER_LABEL_PL2).CODE(),
- Shm->Proc.Power.Domain[pw].PL2 ),
+ Shm->Proc.Features.TDP_Unlock ? '<' : '[',
+ Shm->Proc.Power.Domain[pw].PL2,
+ Shm->Proc.Features.TDP_Unlock ? '>' : ']' ),
PL2_Update, pw );
} else {
PUT( SCANKEY_NULL, attrib[0], width, 3,
@@ -3855,9 +3866,12 @@ REASON_CODE SysInfoPwrThermal(Window *win, CUINT width, CELL_FUNC OutFunc)
}
if (Shm->Proc.Power.TDC > 0) {
GridCall( PUT( SCANKEY_NULL, attrib[5], width, 2,
- "%s%.*s%s [%5u A]", RSC(POWER_THERMAL_TDC).CODE(),
+ "%s%.*s%s %c%5u A%c", RSC(POWER_THERMAL_TDC).CODE(),
width - 18 - RSZ(POWER_THERMAL_TDC), hSpace,
- RSC(POWER_LABEL_TDC).CODE(), Shm->Proc.Power.TDC ),
+ RSC(POWER_LABEL_TDC).CODE(),
+ Shm->Proc.Features.TDP_Unlock ? '<' : '[',
+ Shm->Proc.Power.TDC,
+ Shm->Proc.Features.TDP_Unlock ? '>' : ']' ),
TDC_Update );
} else {
PUT( SCANKEY_NULL, attrib[0], width, 2,
@@ -11505,22 +11519,14 @@ int Shortcut(SCANKEY *scan)
BOXKEY_PL1_OR | ( pw << 4) | 2,
RSC(BOX_BLANK_DESC).CODE() , blankAttr, SCANKEY_NULL,
- " +50 watts ",
- stateAttr[0], key[PL1][0],
- " +10 watts ",
- stateAttr[0], key[PL1][1],
- " +5 watts ",
- stateAttr[0], key[PL1][2],
- " +1 watt ",
- stateAttr[0], key[PL1][3],
- " -1 watt ",
- stateAttr[0], key[PL1][4],
- " -5 watts ",
- stateAttr[0], key[PL1][5],
- " -10 watts ",
- stateAttr[0], key[PL1][6],
- " -50 watts ",
- stateAttr[0], key[PL1][7],
+ RSC(BOX_PWR_OFFSET0).CODE(), stateAttr[0], key[PL1][0],
+ RSC(BOX_PWR_OFFSET1).CODE(), stateAttr[0], key[PL1][1],
+ RSC(BOX_PWR_OFFSET2).CODE(), stateAttr[0], key[PL1][2],
+ RSC(BOX_PWR_OFFSET3).CODE(), stateAttr[0], key[PL1][3],
+ RSC(BOX_PWR_OFFSET4).CODE(), stateAttr[0], key[PL1][4],
+ RSC(BOX_PWR_OFFSET5).CODE(), stateAttr[0], key[PL1][5],
+ RSC(BOX_PWR_OFFSET6).CODE(), stateAttr[0], key[PL1][6],
+ RSC(BOX_PWR_OFFSET7).CODE(), stateAttr[0], key[PL1][7],
RSC(BOX_BLANK_DESC).CODE() , blankAttr, SCANKEY_NULL,
RSC(BOX_PL2_DESC).CODE() , descAttr, SCANKEY_NULL,
@@ -11533,22 +11539,14 @@ int Shortcut(SCANKEY *scan)
BOXKEY_PL2_OR | (pw << 4) | 2,
RSC(BOX_BLANK_DESC).CODE() , blankAttr, SCANKEY_NULL,
- " +50 watts ",
- stateAttr[0], key[PL2][0],
- " +10 watts ",
- stateAttr[0], key[PL2][1],
- " +5 watts ",
- stateAttr[0], key[PL2][2],
- " +1 watt ",
- stateAttr[0], key[PL2][3],
- " -1 watt ",
- stateAttr[0], key[PL2][4],
- " -5 watts ",
- stateAttr[0], key[PL2][5],
- " -10 watts ",
- stateAttr[0], key[PL2][6],
- " -50 watts ",
- stateAttr[0], key[PL2][7],
+ RSC(BOX_PWR_OFFSET0).CODE(), stateAttr[0], key[PL2][0],
+ RSC(BOX_PWR_OFFSET1).CODE(), stateAttr[0], key[PL2][1],
+ RSC(BOX_PWR_OFFSET2).CODE(), stateAttr[0], key[PL2][2],
+ RSC(BOX_PWR_OFFSET3).CODE(), stateAttr[0], key[PL2][3],
+ RSC(BOX_PWR_OFFSET4).CODE(), stateAttr[0], key[PL2][4],
+ RSC(BOX_PWR_OFFSET5).CODE(), stateAttr[0], key[PL2][5],
+ RSC(BOX_PWR_OFFSET6).CODE(), stateAttr[0], key[PL2][6],
+ RSC(BOX_PWR_OFFSET7).CODE(), stateAttr[0], key[PL2][7],
RSC(BOX_BLANK_DESC).CODE() , blankAttr, SCANKEY_NULL),
&winList);
} else {
diff --git a/corefreqk.c b/corefreqk.c
index 17ef829..a666a1d 100644
--- a/corefreqk.c
+++ b/corefreqk.c
@@ -3173,8 +3173,10 @@ void Nehalem_PowerLimit(void)
}
}
if (WrRdMSR) {
- WRMSR(PowerLimit, MSR_TURBO_POWER_CURRENT_LIMIT);
- RDMSR(PowerLimit, MSR_TURBO_POWER_CURRENT_LIMIT);
+ if (PUBLIC(RO(Proc))->Features.TDP_Unlock) {
+ WRMSR(PowerLimit, MSR_TURBO_POWER_CURRENT_LIMIT);
+ RDMSR(PowerLimit, MSR_TURBO_POWER_CURRENT_LIMIT);
+ }
}
PUBLIC(RO(Proc))->PowerThermal.PowerLimit[PWR_DOMAIN(PKG)].Domain_Limit1
= PowerLimit.TDP_Limit;
@@ -3255,8 +3257,10 @@ void Intel_DomainPowerLimit( unsigned int MSR_DOMAIN_POWER_LIMIT,
}
}
if (WrRdMSR) {
- WRMSR(PowerLimit, MSR_DOMAIN_POWER_LIMIT);
- RDMSR(PowerLimit, MSR_DOMAIN_POWER_LIMIT);
+ if (PUBLIC(RO(Proc))->Features.TDP_Unlock) {
+ WRMSR(PowerLimit, MSR_DOMAIN_POWER_LIMIT);
+ RDMSR(PowerLimit, MSR_DOMAIN_POWER_LIMIT);
+ }
}
PUBLIC(RO(Proc))->PowerThermal.PowerLimit[pw] = PowerLimit;
}
diff --git a/coretypes.h b/coretypes.h
index f0f31e2..9d57587 100644
--- a/coretypes.h
+++ b/coretypes.h
@@ -6,7 +6,7 @@
#define COREFREQ_MAJOR 1
#define COREFREQ_MINOR 85
-#define COREFREQ_REV 5
+#define COREFREQ_REV 6
#if !defined(CORE_COUNT)
#define CORE_COUNT 256
diff --git a/intelmsr.h b/intelmsr.h
index a0b1fa1..b4ead7d 100644
--- a/intelmsr.h
+++ b/intelmsr.h
@@ -519,7 +519,7 @@ typedef union
PPIN_CAP : 24-23, /* R/O:IVB-E,BDW-E,SKL-S : MSR_PPIN */
ReservedBits3 : 28-24,
ProgrammableTurbo:29-28, /* Phi,SKL,BDW,HSW,IVB,SNB,NHM,GLM */
- ProgrammableTDP : 30-29,
+ ProgrammableTDP : 30-29, /* Nehalem: Turbo TDC-TDP Limit */
ProgrammableTj : 31-30, /* R/O: 1 = TjOffset is writable */
ReservedBits4 : 32-31,
LowPowerMode : 33-32, /* R/O: 1 = LPM is supported. */