Ich wollte ja nicht direkt antworten, weil ich davon keine Ahnung habe. Aber dann sieht das Forum so tot aus.
Meine Frage: Ist eine Manipulation am TSC-MSR ein generelles No-Go und wenn ja, warum? Oder ist es nur Linux, was empfindlich darauf reagiert? Auch hier: Warum?
In erster Linie betrifft eine Manipulation am TSC nur Programme, die den TSC auch nutzen.
Mir ist aufgefallen, dass Linux den TSC systemabhängig als "unzuverlässig" deklariert (z.B. wenn er im idle stehen bleibt) und dann in bestimmten Situationen nicht nutzt bzw. neu synchronisiert. Daraus schließe ich einfach mal messerscharf, dass das von dir gesichtete Verhalten auch noch systemabhängig ist.
Was das xen angeht, könnte ich mir durchaus vorstellen, dass du den TSC des Hosts manipulierst und dadurch die VM verwirrst. Dass dann die Uhrzeit stimmt, überrascht mich wiederum nicht - in virtualisierten Systemen ist es unhandlich, die Uhr anhand eines schnell tickenden Timers nachzustellen. Da kann man lieber den Host oder einen anderen Timer (RTC, HPET) fragen.
Dazu kommt noch, dass der TSC zwischen verschiedenen Prozessoren (oder Prozessor-Cores) nicht unbedingt synchronisiert sein muss. Auch das kann zu seltsamen Effekten führen, je nachdem, auf welchem Core der Thread nun gelandet ist. Das wäre ein sehr guter Grund, den TSC innerhalb von Xen nicht zu nutzen.
Es scheint auch vom Alter des Linux-Kernels abzuhängen, wie ich kurz angetestet habe. Ältere Linux-Kernel haben WENIGER Probleme mit einer TSC-Manipulation... Also doch ein Problem nur in Linux, was vor nicht all zu langer Zeit erst "eingebaut" wurde?
Der Kernel läuft auch auf i486 (bis 3.7 auch auf i386), die keinen TSC haben (der kam mit dem Pentium). Würde mich nicht wundern, wenn die Abhängigkeiten diverser Subsysteme auf eine genaue Zeitquelle erst in neuerer Zeit gekommen sind bzw. der Kernel erst in neuerer Zeit den TSC als hinreichend zuverlässig dafür ansieht.
In jedem Fall ist WRMSR laut Wikipedia eine privilegierte Operation. Wenn du also an den Prozessor-Interna rumspielst, dann bist du selbst schuld, wenn danach etwas nicht mehr funktioniert. Ein Sicherheitsproblem ist es jedenfalls nicht, weil du vorher schon alle Rechte hattest.