From 43b96ae67e05b8d978c72bd0b51f7e261a9f212b Mon Sep 17 00:00:00 2001 From: CyrIng Date: Tue, 25 Jun 2024 00:39:29 +0200 Subject: [PATCH] [AMD][Zen] Prevent the calculation of negative temperature (#496) --- x86_64/corefreqk.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/x86_64/corefreqk.c b/x86_64/corefreqk.c index e32db595..d234f0ba 100644 --- a/x86_64/corefreqk.c +++ b/x86_64/corefreqk.c @@ -16179,7 +16179,8 @@ static void CTL_AMD_Family_17h_Temp(CORE_RO *Core) Core->PowerThermal.Sensor = TctlSensor.CurTmp; - if (TctlSensor.CurTempRangeSel == 1) + if ((TctlSensor.CurTempRangeSel == 1) + && (Core->PowerThermal.Sensor >= (49 << 3))) { /* Register: SMU::THM::THM_TCON_CUR_TMP - Bit 19: CUR_TEMP_RANGE_SEL 0 = Report on 0C to 225C scale range. @@ -16204,7 +16205,8 @@ static void CCD_AMD_Family_17h_Zen2_Temp(CORE_RO *Core) Core->PowerThermal.Sensor = TccdSensor.CurTmp; - if (TccdSensor.CurTempRangeSel == 1) + if ((TccdSensor.CurTempRangeSel == 1) + && (Core->PowerThermal.Sensor >= (49 << 3))) { Core->PowerThermal.Param.Offset[THERMAL_OFFSET_P1] = 49; } else { @@ -16232,7 +16234,8 @@ static void CCD_AMD_Family_19h_Genoa_Temp(CORE_RO *Core) Core->PowerThermal.Sensor = TccdSensor.CurTmp; - if (TccdSensor.CurTempRangeSel == 1) + if ((TccdSensor.CurTempRangeSel == 1) + && (Core->PowerThermal.Sensor >= (49 << 3))) { Core->PowerThermal.Param.Offset[THERMAL_OFFSET_P1] = 49; } else { @@ -16253,7 +16256,8 @@ static void CCD_AMD_Family_19h_Zen4_Temp(CORE_RO *Core) Core->PowerThermal.Sensor = TccdSensor.CurTmp; - if (TccdSensor.CurTempRangeSel == 1) + if ((TccdSensor.CurTempRangeSel == 1) + && (Core->PowerThermal.Sensor >= (49 << 3))) { Core->PowerThermal.Param.Offset[THERMAL_OFFSET_P1] = 49; } else {