Simple OSX kext to reset TSC_ADJUST and thus sync the TSCs on boot and wake.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
English.lproj initial commit Jan 24, 2018
TSCAdjustReset.xcodeproj initial commit Jan 24, 2018
Info.plist initial commit Jan 24, 2018
README.md fix Jan 24, 2018
TSCAdjustReset.cpp run reset on wake as well Feb 1, 2018
TSCAdjustReset.h run reset on wake as well Feb 1, 2018
version.plist initial commit Jan 24, 2018

README.md

TSCAdjustReset.kext

This kernel extension fixes the consenquences of unsyncronised TSC when booting Mac OS on an X299 board with Skylake-X CPUs.

This kext is based on VoodooTSCSync. That kext writes the same TSC value to all cores, and while that works, the end result is that all cores are adjusted. And it does that multiple times.

On x299 and Skylake-X, the CPU has an invariant TSC, meaning it will NOT get out of sync. The problem with x299/Sklylake-X is that something (probably the BIOS, or even the CPU itself) writes to the TSC of some of the cores, and thus the TSCs are not in sync upon cold or warm boot. The IA32_TSC_ADJUST MSR holds the value of how much each core was adjusted. Writing 0 this register rolls back any previous changes. So TSCAdjustReset.kext does exactly that. It can even be unloaded after it did its job.