После отладки нестабильной проблемы tsc для BIOS продуктов моей компании я подозреваю, что tsc может быть всегда нестабильным, когда единственным другим источником тактовых импульсов является jiffies.
Я получил ошибку типа Clocksource tsc unstable (delta = -531266231 ns).
Затем ядро выбрало jiffies, отличные от tsc. Единственными двумя источниками синхронизации являются tsc и jiffies. Я пробовал ядро Linux 2.6 и 3.2 как с i386, так и с x64. Ядро сообщило, что ЦП фактически поддерживает константу tsc и инвариант tsc.
Проверив исходный код Linux, я обнаружил, что tsc имеет флаг CLOCKSOURCE_MUST_VERIFY
, а jiffies — нет. Я предполагаю, что если есть только два источника тактовых импульсов, jiffies и tsc, jiffies будет сторожевым псом источника тактового сигнала. Однако, по сравнению с tsc, jiffies - очень плохой источник синхронизации, и поэтому я подозреваю, что tsc в этой ситуации всегда будет "нестабильным", потому что для его проверки используется плохой сторожевой таймер.
Я также проверил некоторые другие системы с хорошо работающим tsc и обнаружил, что у них есть другие источники синхронизации, такие как Hpet или acpi_pm.
Таким образом, как я могу определить, является ли нестабильность tsc следствием мигания или какой-то другой ошибки?