在调试了我公司产品的 BIOS 的不稳定 tsc 问题后,我怀疑当唯一的其他时钟源是 jiffies 时,tsc 可能总是不稳定。
我得到了这样的错误,
Clocksource tsc unstable (delta = -531266231 ns).
然后内核选择了 tsc 以外的 jiffies。仅有的两个时钟源是 tsc 和 jiffies。我用 i386 和 x64 尝试了 Linux 内核 2.6 和 3.2。内核说CPU其实支持constant tsc和invariant tsc。
检查Linux源代码后,我发现 tsc 有一个标志CLOCKSOURCE_MUST_VERIFY
,而 jiffies 没有。我猜如果只有两个时钟源,jiffies 和 tsc,那么 jiffies 将是时钟源看门狗。但是,与 tsc 相比,jiffies 是一个非常差的时钟源,因此我怀疑这种情况下的 tsc 将始终“不稳定”,因为有一个糟糕的看门狗来验证它。
我还检查了其他一些运行良好的 tsc 系统,发现它们还有其他时钟源,如 Hpet 或 acpi_pm。
因此,我如何判断 tsc 不稳定是由 jiffies 还是其他地方的错误引起的?