clocksource_race_analysis/README-clocksource-race.md

797 B

clocksource_race_analysis

Änderung

  • baseline_recalc() wird unmittelbar nach enable_new_clocksource() ausgeführt, damit kein erstes read() mehr auf die alte Baseline zugreift.
  • smp_wmb() stellt sicher, dass locklose Leser die neue Baseline sehen, bevor sie den Offset interpretieren.
  • Der Workqueue-Refresh bleibt aktiv, dient jetzt aber nur noch als Hintergrund-Sanity-Check.

Testplan

  1. trace-cmd record -e clocksource:* -- ./run-switch.sh auf unpatchtem Kernel zur Referenz.
  2. Patch anwenden, Kernel neu bauen, VM booten.
  3. 100 VM-Zyklen TSC -> HPET -> TSC mit Instrumentierung fahren, verifizieren, dass kein erster read() mehr den ~1,11 s Sprung zeigt.
  4. Gegencheck auf Bare-Metal für HPET↔ACPI und TSC↔ACPI, Resultate gegen monotonic clock referenzieren.