From f3959b535e5cc651dae8b3e6ef9887fff51470b5 Mon Sep 17 00:00:00 2001 From: Kevin Van den Abeele Date: Mon, 21 Sep 2015 19:45:49 +0200 Subject: [PATCH] Skylake support Added initial support for skylake cpus: - Clock speed, core temp and load should all be working - Power usage does not seem to be correct at the moment --- Hardware/CPU/IntelCPU.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Hardware/CPU/IntelCPU.cs b/Hardware/CPU/IntelCPU.cs index 6a7b631..064fcd6 100644 --- a/Hardware/CPU/IntelCPU.cs +++ b/Hardware/CPU/IntelCPU.cs @@ -1,4 +1,4 @@ -/* +/* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this @@ -25,7 +25,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { IvyBridge, Haswell, Broadwell, - Silvermont + Silvermont, + Skylake } private readonly Sensor[] coreTemperatures; @@ -162,6 +163,10 @@ namespace OpenHardwareMonitor.Hardware.CPU { microarchitecture = Microarchitecture.Silvermont; tjMax = GetTjMaxFromMSR(); break; + case 0x5E: + microarchitecture = Microarchitecture.Skylake; + tjMax = GetTjMaxFromMSR(); + break; default: microarchitecture = Microarchitecture.Unknown; tjMax = Floats(100); @@ -207,7 +212,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { case Microarchitecture.IvyBridge: case Microarchitecture.Haswell: case Microarchitecture.Broadwell: - case Microarchitecture.Silvermont: { + case Microarchitecture.Silvermont: + case Microarchitecture.Skylake: { uint eax, edx; if (Ring0.Rdmsr(MSR_PLATFORM_INFO, out eax, out edx)) { timeStampCounterMultiplier = (eax >> 8) & 0xff; @@ -268,6 +274,7 @@ namespace OpenHardwareMonitor.Hardware.CPU { microarchitecture == Microarchitecture.IvyBridge || microarchitecture == Microarchitecture.Haswell || microarchitecture == Microarchitecture.Broadwell || + microarchitecture == Microarchitecture.Skylake || microarchitecture == Microarchitecture.Silvermont) { powerSensors = new Sensor[energyStatusMSRs.Length]; @@ -383,7 +390,8 @@ namespace OpenHardwareMonitor.Hardware.CPU { case Microarchitecture.IvyBridge: case Microarchitecture.Haswell: case Microarchitecture.Broadwell: - case Microarchitecture.Silvermont: { + case Microarchitecture.Silvermont: + case Microarchitecture.Skylake: { uint multiplier = (eax >> 8) & 0xff; coreClocks[i].Value = (float)(multiplier * newBusClock); } break;