UefiCpuPkg/FeaturesLib: Fix Haswell CPU hang with 50% throttling
authorRuiyu Ni <ruiyu.ni@intel.com>
Tue, 6 Feb 2018 07:26:41 +0000 (15:26 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Thu, 8 Feb 2018 05:49:06 +0000 (13:49 +0800)
commit0c8b88022372846a377c424f46e671d8868d4ece
tree8658f7c4353bc3e1f4c49cfab489fc44c6a7a004
parent115eae650bfd2be2c2bc37360f4a755065e774c4
UefiCpuPkg/FeaturesLib: Fix Haswell CPU hang with 50% throttling

Today's implementation only assumes SandyBridge CPU supports
Extended On-Demand Clock Modulation Duty Cycle.
Actually it is supported when CPUID.06h.EAX[5] == 1.

When platform requests 50% throttling, it causes value 1000b
set to the low-4 bits of IA32_CLOCK_MODULATION.
But the wrong code sets 1000b to bits[1-3] which causes assertion.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Jeff Fan <vanjeff_919@hotmail.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
UefiCpuPkg/Library/CpuCommonFeaturesLib/ClockModulation.c