From ec01af6cd0b3e56f0c3851ebef1e9c10cb3520f5 Mon Sep 17 00:00:00 2001 From: Phyxion <7643972+Phyxion@users.noreply.github.com> Date: Sun, 3 May 2020 22:29:01 +0200 Subject: [PATCH] Update Amd17Cpu.cs Fixes #237 --- LibreHardwareMonitorLib/Hardware/Cpu/Amd17Cpu.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/LibreHardwareMonitorLib/Hardware/Cpu/Amd17Cpu.cs b/LibreHardwareMonitorLib/Hardware/Cpu/Amd17Cpu.cs index eae4dfc..eee0c37 100644 --- a/LibreHardwareMonitorLib/Hardware/Cpu/Amd17Cpu.cs +++ b/LibreHardwareMonitorLib/Hardware/Cpu/Amd17Cpu.cs @@ -266,11 +266,16 @@ namespace LibreHardwareMonitor.Hardware.CPU for (uint i = 0; i < _ccdTemperatures.Length; i++) { Ring0.WritePciConfig(0x00, FAMILY_17H_PCI_CONTROL_REGISTER, F17H_M70H_CCD1_TEMP + (i * 0x4)); - Ring0.ReadPciConfig(0x00, FAMILY_17H_PCI_CONTROL_REGISTER + 4, out uint ccdTempData); + Ring0.ReadPciConfig(0x00, FAMILY_17H_PCI_CONTROL_REGISTER + 4, out uint ccdRawTemp); - uint ccdTemp = ccdTempData & 0xFFF; - if (ccdTemp == 0) - continue; + ccdRawTemp &= 0xFFF; + if (ccdRawTemp == 0) + break; + + + float ccdTemp = ((ccdRawTemp * 125) - 305000) * 0.001f; + if (ccdTemp > 125) // Zen 2 reports 95 degrees C max, but it might exceed that. + break; if (_ccdTemperatures[i] == null) { @@ -281,7 +286,7 @@ namespace LibreHardwareMonitor.Hardware.CPU _hw._settings)); } - _ccdTemperatures[i].Value = ((ccdTemp * 125) - 305000) * 0.001f; + _ccdTemperatures[i].Value = ccdTemp; } Sensor[] activeCcds = _ccdTemperatures.Where(x => x != null).ToArray();