Re: [PATCH v14 20/25] x86/tsc: calibrate tsc only once

From: Thomas Gleixner
Date: Thu Jul 19 2018 - 07:01:55 EST


On Thu, 19 Jul 2018, Peter Zijlstra wrote:
> On Tue, Jul 17, 2018 at 10:22:06PM -0400, Pavel Tatashin wrote:
> > During boot tsc is calibrated twice: once in tsc_early_delay_calibrate(),
> > and the second time in tsc_init().
> >
> > Rename tsc_early_delay_calibrate() to tsc_early_init(), and rework it so
> > the calibration is done only early, and make tsc_init() to use the values
> > already determined in tsc_early_init().
> >
> > Sometimes it is not possible to determine tsc early, as the subsystem that
> > is required is not yet initialized, in such case try again later in
> > tsc_init().
>
> It might be nice to preserve some of the information tglx dug out during
> review of all this. Like the various methods of calibrate_*() and their
> dependencies.
>
> And I note that this patch relies on the magic of native_calibrate_cpu()
> working really early and not exploding in the quick calibration run.
> This either wants fixing or documenting.
>
> I think the initial idea was to only do the fast_calibrate (cpuid, msr
> and possibly the quick_pit) things early and delay the HPET/PMTIMER
> magic until later.

Yes. I really would prefer to have this as an explicit expressed mechanism
rather than relying on magic variables not being initialized.

Thanks

tglx