- if (IS_SANDY_BRIDGE_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
- CPU_REGISTER_TABLE_WRITE_FIELD (\r
- ProcessorNumber,\r
- Msr,\r
- MSR_SANDY_BRIDGE_IA32_CLOCK_MODULATION,\r
- MSR_SANDY_BRIDGE_IA32_CLOCK_MODULATION_REGISTER,\r
- Bits.OnDemandClockModulationDutyCycle,\r
- PcdGet8 (PcdCpuClockModulationDutyCycle)\r
- );\r
- CPU_REGISTER_TABLE_WRITE_FIELD (\r
- ProcessorNumber,\r
- Msr,\r
- MSR_SANDY_BRIDGE_IA32_CLOCK_MODULATION,\r
- MSR_SANDY_BRIDGE_IA32_CLOCK_MODULATION_REGISTER,\r
- Bits.OnDemandClockModulationEnable,\r
- (State) ? 1 : 0\r
- );\r
- } else {\r
- CPU_REGISTER_TABLE_WRITE_FIELD (\r
- ProcessorNumber,\r
- Msr,\r
- MSR_IA32_CLOCK_MODULATION,\r
- MSR_IA32_CLOCK_MODULATION_REGISTER,\r
- Bits.OnDemandClockModulationDutyCycle,\r
- PcdGet8 (PcdCpuClockModulationDutyCycle)\r
- );\r
+ CPUID_THERMAL_POWER_MANAGEMENT_EAX ThermalPowerManagementEax;\r
+ AsmCpuid (CPUID_THERMAL_POWER_MANAGEMENT, &ThermalPowerManagementEax.Uint32, NULL, NULL, NULL);\r
+\r
+ CPU_REGISTER_TABLE_WRITE_FIELD (\r
+ ProcessorNumber,\r
+ Msr,\r
+ MSR_IA32_CLOCK_MODULATION,\r
+ MSR_IA32_CLOCK_MODULATION_REGISTER,\r
+ Bits.OnDemandClockModulationDutyCycle,\r
+ PcdGet8 (PcdCpuClockModulationDutyCycle) >> 1\r
+ );\r
+ if (ThermalPowerManagementEax.Bits.ECMD == 1) {\r