diff options
author | CyrIng <labs@cyring.fr> | 2021-05-16 02:00:52 +0200 |
---|---|---|
committer | CyrIng <labs@cyring.fr> | 2021-05-16 02:00:52 +0200 |
commit | 72bc79033c7846fac4b613ad9f7a56de94d386fc (patch) | |
tree | 3bfd3a839cfa7b0630e0c277ae479aad99f037a5 | |
parent | 1d4f6b0053d38eccfe365ee6d85fe2bbaf539283 (diff) | |
parent | c952d14083c32a838dd8496fbac25622de80d8c2 (diff) |
Version 1.85 hotfix1.85
-rw-r--r-- | corefreq-cli-rsc.c | 8 | ||||
-rw-r--r-- | corefreq-cli-rsc.h | 17 | ||||
-rw-r--r-- | corefreq-cli.c | 84 | ||||
-rw-r--r-- | corefreqk.c | 12 | ||||
-rw-r--r-- | coretypes.h | 2 | ||||
-rw-r--r-- | intelmsr.h | 2 |
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 @@ -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. */ |