From: Chen Yu <yu.c.chen@xxxxxxxxx> Currently we fetch the tsc radio by: ratio = (lo >> 8) & 0x1f; thus get bit8~bit12 of the MSR_PLATFORM_INFO, however according to Intel 64 and IA-32 Architectures Software Developer Manual 35.5, the ratio bit should be bit8~bit15, otherwise we might get incorrect tsc ratio and cause system hang later(mdelay corrupted). Fix this problem by masking 0xff instead. Cc: 3.14+ <stable@xxxxxxxxxxxxxxx> # 3.14+ Signed-off-by: Chen Yu <yu.c.chen@xxxxxxxxx> --- arch/x86/kernel/tsc_msr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/tsc_msr.c b/arch/x86/kernel/tsc_msr.c index 92ae6ac..6aa0f4d 100644 --- a/arch/x86/kernel/tsc_msr.c +++ b/arch/x86/kernel/tsc_msr.c @@ -92,7 +92,7 @@ unsigned long try_msr_calibrate_tsc(void) if (freq_desc_tables[cpu_index].msr_plat) { rdmsr(MSR_PLATFORM_INFO, lo, hi); - ratio = (lo >> 8) & 0x1f; + ratio = (lo >> 8) & 0xff; } else { rdmsr(MSR_IA32_PERF_STATUS, lo, hi); ratio = (hi >> 8) & 0x1f; -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html