@@ -6704,56 +6704,60 @@ void ThermalMonitor_Set(CORE_RO *Core)
6704
6704
RDMSR (ThermStatus , MSR_IA32_THERM_STATUS );
6705
6705
}
6706
6706
}
6707
- Core -> PowerThermal .Events = ( (ThermStatus .StatusBit
6708
- |ThermStatus .StatusLog ) << 0 )
6709
- | (ThermStatus .PROCHOTLog << 1 )
6710
- | (ThermStatus .CriticalTempLog << 2 )
6711
- | ( (ThermStatus .Threshold1Log
6712
- |ThermStatus .Threshold2Log ) << 3 )
6713
- | (ThermStatus .PwrLimitLog << 4 )
6714
- | (ThermStatus .CurLimitLog << 5 )
6715
- | (ThermStatus .XDomLimitLog << 6 );
6707
+ Core -> PowerThermal .Events = \
6708
+ ( (ThermStatus .StatusBit | ThermStatus .StatusLog ) << 0 )
6709
+ | (ThermStatus .PROCHOTLog << 1 )
6710
+ | (ThermStatus .CriticalTempLog << 2 )
6711
+ | ((ThermStatus .Threshold1Log | ThermStatus .Threshold2Log ) << 3 )
6712
+ | (ThermStatus .PwrLimitLog << 4 )
6713
+ | (ThermStatus .CurLimitLog << 5 )
6714
+ | (ThermStatus .XDomLimitLog << 6 );
6715
+
6716
+ if (PUBLIC (RO (Proc ))-> Features .Power .EAX .PTM
6717
+ && (Core -> Bind == PUBLIC (RO (Proc ))-> Service .Core ))
6718
+ {
6719
+ ClearBit = 0 ;
6720
+ ThermStatus .value = 0 ;
6721
+ RDMSR (ThermStatus , MSR_IA32_PACKAGE_THERM_STATUS );
6716
6722
6717
- if (PUBLIC (RO (Proc ))-> Features .Power .EAX .PTM
6718
- && (Core -> Bind == PUBLIC (RO (Proc ))-> Service .Core ))
6723
+ if (Clear_Events & EVENT_THERM_SENSOR ) {
6724
+ ThermStatus .StatusLog = 0 ;
6725
+ ClearBit = 1 ;
6726
+ }
6727
+ if (Clear_Events & EVENT_THERM_PROCHOT ) {
6728
+ ThermStatus .PROCHOTLog = 0 ;
6729
+ ClearBit = 1 ;
6730
+ }
6731
+ if (Clear_Events & EVENT_THERM_CRIT ) {
6732
+ ThermStatus .CriticalTempLog = 0 ;
6733
+ ClearBit = 1 ;
6734
+ }
6735
+ if (Clear_Events & EVENT_THERM_THOLD ) {
6736
+ ThermStatus .Threshold1Log = 0 ;
6737
+ ThermStatus .Threshold2Log = 0 ;
6738
+ ClearBit = 1 ;
6739
+ }
6740
+ if (Clear_Events & EVENT_POWER_LIMIT ) {
6741
+ ThermStatus .PwrLimitLog = 0 ;
6742
+ ClearBit = 1 ;
6743
+ }
6744
+ if (ClearBit )
6719
6745
{
6720
- ClearBit = 0 ;
6721
- ThermStatus .value = 0 ;
6722
- RDMSR (ThermStatus , MSR_IA32_PACKAGE_THERM_STATUS );
6723
-
6724
- if (Clear_Events & EVENT_THERM_SENSOR ) {
6725
- ThermStatus .StatusLog = 0 ;
6726
- ClearBit = 1 ;
6727
- }
6728
- if (Clear_Events & EVENT_THERM_PROCHOT ) {
6729
- ThermStatus .PROCHOTLog = 0 ;
6730
- ClearBit = 1 ;
6731
- }
6732
- if (Clear_Events & EVENT_THERM_CRIT ) {
6733
- ThermStatus .CriticalTempLog = 0 ;
6734
- ClearBit = 1 ;
6735
- }
6736
- if (Clear_Events & EVENT_THERM_THOLD ) {
6737
- ThermStatus .Threshold1Log = 0 ;
6738
- ThermStatus .Threshold2Log = 0 ;
6739
- ClearBit = 1 ;
6740
- }
6741
- if (Clear_Events & EVENT_POWER_LIMIT ) {
6742
- ThermStatus .PwrLimitLog = 0 ;
6743
- ClearBit = 1 ;
6744
- }
6745
- if (ClearBit ) {
6746
+ THERM_INTERRUPT ThermInterrupt = {.value = 0 };
6747
+ RDMSR (ThermInterrupt , MSR_IA32_PACKAGE_THERM_INTERRUPT );
6748
+ if (!(ThermInterrupt .High_Temp_Int |ThermInterrupt .Low_Temp_Int ))
6749
+ {
6746
6750
WRMSR (ThermStatus , MSR_IA32_PACKAGE_THERM_STATUS );
6747
6751
RDMSR (ThermStatus , MSR_IA32_PACKAGE_THERM_STATUS );
6748
6752
}
6749
- PUBLIC (RO (Proc ))-> PowerThermal .Events = ((ThermStatus .StatusBit
6750
- |ThermStatus .StatusLog ) << 0 )
6751
- | (ThermStatus .PROCHOTLog << 1 )
6752
- | (ThermStatus .CriticalTempLog << 2 )
6753
- | ( (ThermStatus .Threshold1Log
6754
- |ThermStatus .Threshold2Log )<< 3 )
6755
- | (ThermStatus .PwrLimitLog << 4 );
6756
6753
}
6754
+ PUBLIC (RO (Proc ))-> PowerThermal .Events = \
6755
+ ( (ThermStatus .StatusBit | ThermStatus .StatusLog ) << 0 )
6756
+ | (ThermStatus .PROCHOTLog << 1 )
6757
+ | (ThermStatus .CriticalTempLog << 2 )
6758
+ | ((ThermStatus .Threshold1Log | ThermStatus .Threshold2Log ) << 3 )
6759
+ | (ThermStatus .PwrLimitLog << 4 );
6760
+ }
6757
6761
6758
6762
RDMSR (PfInfo , MSR_PLATFORM_INFO );
6759
6763
0 commit comments