@@ -8118,10 +8118,15 @@ void ThermalMonitor_IA32(CORE_RO *Core)
8118
8118
RDMSR(ThermInterrupt, MSR_IA32_THERM_INTERRUPT);
8119
8119
8120
8120
Core->ThermalPoint.Value[THM_THRESHOLD_1] = \
8121
- ThermInterrupt.Threshold1_Value;
8121
+ Core->PowerThermal.Param.Offset[0]
8122
+ - Core->PowerThermal.Param.Offset[1]
8123
+ - ThermInterrupt.Threshold1_Value;
8122
8124
8123
8125
Core->ThermalPoint.Value[THM_THRESHOLD_2] = \
8124
- ThermInterrupt.Threshold2_Value;
8126
+ Core->PowerThermal.Param.Offset[0]
8127
+ - Core->PowerThermal.Param.Offset[1]
8128
+ - ThermInterrupt.Threshold2_Value;
8129
+
8125
8130
if (ThermInterrupt.Threshold1_Int) {
8126
8131
BITSET(LOCKLESS, Core->ThermalPoint.State, THM_THRESHOLD_1);
8127
8132
} else {
@@ -8199,10 +8204,15 @@ void ThermalMonitor_IA32(CORE_RO *Core)
8199
8204
RDMSR(ThermInterrupt, MSR_IA32_PACKAGE_THERM_INTERRUPT);
8200
8205
8201
8206
PUBLIC(RO(Proc))->ThermalPoint.Value[THM_THRESHOLD_1] = \
8202
- ThermInterrupt.Threshold1_Value;
8207
+ Core->PowerThermal.Param.Offset[0]
8208
+ - Core->PowerThermal.Param.Offset[1]
8209
+ - ThermInterrupt.Threshold1_Value;
8203
8210
8204
8211
PUBLIC(RO(Proc))->ThermalPoint.Value[THM_THRESHOLD_2] = \
8205
- ThermInterrupt.Threshold2_Value;
8212
+ Core->PowerThermal.Param.Offset[0]
8213
+ - Core->PowerThermal.Param.Offset[1]
8214
+ - ThermInterrupt.Threshold2_Value;
8215
+
8206
8216
if (ThermInterrupt.Threshold1_Int) {
8207
8217
BITSET(LOCKLESS, PUBLIC(RO(Proc))->ThermalPoint.State,
8208
8218
THM_THRESHOLD_1);
@@ -8272,8 +8282,6 @@ void ThermalMonitor_Set(CORE_RO *Core)
8272
8282
Core->PowerThermal.Param.Offset[0] = 100;
8273
8283
}
8274
8284
8275
- ThermalMonitor_IA32(Core);
8276
-
8277
8285
RDMSR(PfInfo, MSR_PLATFORM_INFO);
8278
8286
8279
8287
if (PfInfo.ProgrammableTj)
@@ -8297,6 +8305,8 @@ void ThermalMonitor_Set(CORE_RO *Core)
8297
8305
break;
8298
8306
}
8299
8307
}
8308
+
8309
+ ThermalMonitor_IA32(Core);
8300
8310
}
8301
8311
8302
8312
void CorePerfLimitReasons(CORE_RO *Core)
0 commit comments