2
0
mirror of https://github.com/hirschmann/nbfc synced 2025-08-28 20:57:54 +00:00

Add suppport for Intel Ice Lake CPU architecture

This commit is contained in:
Stefan Hirschmann 2019-11-20 09:17:45 +01:00
parent 84b0417faf
commit 5fde12a32c

View File

@ -30,7 +30,8 @@ namespace OpenHardwareMonitor.Hardware.CPU {
Airmont, Airmont,
KabyLake, KabyLake,
ApolloLake, ApolloLake,
CoffeeLake CoffeeLake,
IceLake,
} }
private readonly Sensor[] coreTemperatures; private readonly Sensor[] coreTemperatures;
@ -193,6 +194,11 @@ namespace OpenHardwareMonitor.Hardware.CPU {
microarchitecture = Microarchitecture.CoffeeLake; microarchitecture = Microarchitecture.CoffeeLake;
tjMax = GetTjMaxFromMSR(); tjMax = GetTjMaxFromMSR();
break; break;
case 0x7D: // Intel Core i3, i5, i7 10xxx (10nm+)
case 0x7E:
microarchitecture = Microarchitecture.IceLake;
tjMax = GetTjMaxFromMSR();
break;
default: default:
microarchitecture = Microarchitecture.Unknown; microarchitecture = Microarchitecture.Unknown;
tjMax = Floats(100); tjMax = Floats(100);
@ -243,7 +249,8 @@ namespace OpenHardwareMonitor.Hardware.CPU {
case Microarchitecture.Airmont: case Microarchitecture.Airmont:
case Microarchitecture.ApolloLake: case Microarchitecture.ApolloLake:
case Microarchitecture.KabyLake: case Microarchitecture.KabyLake:
case Microarchitecture.CoffeeLake: { case Microarchitecture.CoffeeLake:
case Microarchitecture.IceLake: {
uint eax, edx; uint eax, edx;
if (Ring0.Rdmsr(MSR_PLATFORM_INFO, out eax, out edx)) { if (Ring0.Rdmsr(MSR_PLATFORM_INFO, out eax, out edx)) {
timeStampCounterMultiplier = (eax >> 8) & 0xff; timeStampCounterMultiplier = (eax >> 8) & 0xff;
@ -308,7 +315,8 @@ namespace OpenHardwareMonitor.Hardware.CPU {
microarchitecture == Microarchitecture.Silvermont || microarchitecture == Microarchitecture.Silvermont ||
microarchitecture == Microarchitecture.Airmont || microarchitecture == Microarchitecture.Airmont ||
microarchitecture == Microarchitecture.KabyLake || microarchitecture == Microarchitecture.KabyLake ||
microarchitecture == Microarchitecture.ApolloLake) microarchitecture == Microarchitecture.ApolloLake ||
microarchitecture == Microarchitecture.IceLake)
{ {
powerSensors = new Sensor[energyStatusMSRs.Length]; powerSensors = new Sensor[energyStatusMSRs.Length];
lastEnergyTime = new DateTime[energyStatusMSRs.Length]; lastEnergyTime = new DateTime[energyStatusMSRs.Length];
@ -427,7 +435,8 @@ namespace OpenHardwareMonitor.Hardware.CPU {
case Microarchitecture.Skylake: case Microarchitecture.Skylake:
case Microarchitecture.ApolloLake: case Microarchitecture.ApolloLake:
case Microarchitecture.KabyLake: case Microarchitecture.KabyLake:
case Microarchitecture.CoffeeLake: { case Microarchitecture.CoffeeLake:
case Microarchitecture.IceLake: {
uint multiplier = (eax >> 8) & 0xff; uint multiplier = (eax >> 8) & 0xff;
coreClocks[i].Value = (float)(multiplier * newBusClock); coreClocks[i].Value = (float)(multiplier * newBusClock);
} break; } break;