From e689abc8b943659c45d2a9304e41e7a57a84595d Mon Sep 17 00:00:00 2001 From: Mika Date: Tue, 2 Dec 2025 17:02:55 +0000 Subject: [PATCH] Add README-clocksource-race.md --- README-clocksource-race.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 README-clocksource-race.md diff --git a/README-clocksource-race.md b/README-clocksource-race.md new file mode 100644 index 0000000..5ad21b0 --- /dev/null +++ b/README-clocksource-race.md @@ -0,0 +1,12 @@ +# 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.