On Thu, Mar 04, 2021 at 03:15:13PM +0100, Thomas Gleixner wrote: > Feng, > > On Thu, Mar 04 2021 at 15:43, Feng Tang wrote: > > On Wed, Mar 03, 2021 at 04:50:31PM +0100, Thomas Gleixner wrote: > >> Anything pre TSC_ADJUST wants the watchdog on. With TSC ADJUST available > >> we can probably avoid it. > >> > >> There is a caveat though. If the machine never goes idle then TSC adjust > >> is not able to detect a potential wreckage. OTOH, most of the broken > >> BIOSes tweak TSC only by a few cycles and that is usually detectable > >> during boot. So we might be clever about it and schedule a check every > >> hour when during the first 10 minutes a modification of TSC adjust is > >> seen on any CPU. > > > > I don't have much experience with tsc_adjust, and try to understand it: > > The 'modification of TSC' here has 2 cases: ? > > * First read of 'TSC_ADJUST' MSR of a just boot CPU returns non-zero > > value > > That's catching stupid BIOSes which set the TSC to random values during > boot/reboot. That's a one off boot issue and not a real problem. The > kernel fixes it up and is done with it. Nothing to care about. > > > * Following read of 'TSC_ADJUST' doesn't equal to the 'tsc_adjust' value > > saved in per-cpu data. > > That's where we catch broken BIOS/SMI implementations which try to > "hide" the time wasted in BIOS/SMI by setting the TSC back to the value > they saved on SMI entry. That was a popular BIOS "feature" some years > ago, but it seems the BIOS tinkerers finally gave up on it. Thanks for the detailed explaination! I understand now.
> >> Where is this TSC_DISABLE_WRITE bit again? > > I'm serious about this. Once the kernel has taken over a CPU there is > absolutely no reason for any context to write to the TSC/TSC_ADJUST > register ever again. So having a mechanism to prevent writes would > surely help to make the TSC more trustworthy. > > > Also, does the patch ("x86/tsc: mark tsc reliable for qualified platforms") > > need to wait till this caveat case is solved? > > Yes, but that should be trivial to do. Ok, I see. Thanks, Feng > > Thanks, > > tglx