On Thu, Apr 01, 2021 at 06:43:30PM -0500, Scott Cheloha wrote:
> On Thu, Apr 01, 2021 at 03:41:24PM -0400, Josh Rickmar wrote:
> > On Thu, Apr 01, 2021 at 03:22:00PM -0400, Josh Rickmar wrote:
> > > On Thu, Apr 01, 2021 at 02:15:48PM -0500, Scott Cheloha wrote:
> > > > On Sat, Mar 27, 2021 at 02:20:21AM +0000, Stefmorino wrote:
> > > > > > Feel free to share your raw data.
> > > > > 
> > > > > Also includes some standard sendbug dumps: https://0x0.st/-qng.tgz
> > > > 
> > > > Thanks!
> > > > 
> > > > TL;DR:
> > > > 
> > > > Two things:
> > > > 
> > > > 1. Could you check whether Linux will use the TSC as a clocksource on
> > > >    this machine?  The dmesg output on any given distribution should
> > > >    contain lines about the TSC.
> > > > 
> > > >    [...]
> > > > 
> > > Hey, thanks for the reminder to try this out with Linux.  Will give it
> > > a shot shortly.
> > > 
> > > As for the BIOS, 1.58 is the current version (found here):
> > > 
> > > https://support.lenovo.com/us/en/downloads/ds503790
> > > 
> > > This same issue was happening with all older BIOS versions that I have
> > > used as well.
> 
> Okay, not great news, but at least the behavior is consistent.
> 
> > Seems Linux doesn't like it either:
> > 
> > localhost:~# dmesg | egrep -i 'tsc|clocksource'
> > [    0.000000] tsc: Fast TSC calibration using PIT
> > [    0.000000] tsc: Detected 1996.173 MHz processor
> > [    0.043227] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 
> > 0xffffffff, max_idle_ms: 6370452778343963 ns
> > [    0.114728] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, 
> > max_idle_ns: 133484873504 ns
> > [    0.131435] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 
> > 0x398c1ebcd00, max_idle_ns: 881590807727 ns
> > [    0.244772] TSC synchronization [CPU#0 -> CPU#1]:
> > [    0.244772] Measured 7296391160 warp between CPUs, turning off TSC clock.
> > [    0.244772] tsc: Marking TSC unstable due to check_tsc_sync_source_failed
> > [    0.252185] clocksource: jiffies: mask: 0xffffffff max_cycles: 
> > 0xffffffff, max_idle_ns: 6370867519511994 ns
> > [    0.316884] clocksource: Switched to clocksource hpet
> > [    0.335046] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, 
> > max_idle_ns: 2085701024 ns
> 
> Hmmm.  Being able to work around this would be nice.
> 
> FreeBSD has code that uses WRMSR to synchronize the TSC:
> 
> https://cgit.freebsd.org/src/commit/sys/x86/x86/tsc.c?id=b2c63698d4b81576e0c8842263ee86e86cd34e76
> 
> My guess is that support for writing the TSC is not implemented by
> every hypervisor, so we would need to be very careful in deciding when
> to try it.  Otherwise we end up with protection faults and other crap
> we don't want.
> 
> Doing this via TSC_ADJUST (instead of writing the TSC directly) is
> nicer because you just check for the CPUID level and bit.  No
> guesswork.  But we can't in your case because, as I said, no
> TSC_ADJUST support on your CPU.

This seems to be a common problem among most Ryzen Thinkpads.

https://bugzilla.kernel.org/show_bug.cgi?id=202525

Oddly enough, the A485/A585 seems to have gotten a BIOS patch (v1.28,
Nov 2019) that fixes this, but no other models that I can see.

Reply via email to