12 lines
797 B
Markdown
12 lines
797 B
Markdown
# 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.
|