]> git.baikalelectronics.ru Git - kernel.git/commit
x86/smpboot: Make optimization of delay calibration work correctly
authorPavel Tatashin <pasha.tatashin@oracle.com>
Sat, 28 Oct 2017 00:11:00 +0000 (20:11 -0400)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 7 Nov 2017 15:04:54 +0000 (16:04 +0100)
commitc611d33ec8041165559cc2d13ea613d4c464c1e1
treead750f9e42d213b7847a9f3cec679cf4d9406951
parentdc72ab68170a2b2b09a96b3c63f5d3392e7ffa2f
x86/smpboot: Make optimization of delay calibration work correctly

If the TSC has constant frequency then the delay calibration can be skipped
when it has been calibrated for a package already. This is checked in
calibrate_delay_is_known(), but that function is buggy in two aspects:

It returns 'false' if

  (!tsc_disabled && !cpu_has(&cpu_data(cpu), X86_FEATURE_CONSTANT_TSC)

which is obviously the reverse of the intended check and the check for the
sibling mask cannot work either because the topology links have not been
set up yet.

Correct the condition and move the call to set_cpu_sibling_map() before
invoking calibrate_delay() so the sibling check works correctly.

[ tglx: Rewrote changelong ]

Fixes: a94eec8dbc2c ("x86/tsc: Use topology functions")
Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: peterz@infradead.org
Cc: bob.picco@oracle.com
Cc: steven.sistare@oracle.com
Cc: daniel.m.jordan@oracle.com
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/20171028001100.26603-1-pasha.tatashin@oracle.com
arch/x86/kernel/smpboot.c
arch/x86/kernel/tsc.c