fix(quickemu): improve TSC flag detection for macOS on AMD CPUs

This commit is contained in:
Martin Wimpress 2026-01-24 02:28:01 +00:00 committed by Martin Wimpress
parent a2539d3c56
commit 3cfbfb1a30
1 changed files with 11 additions and 0 deletions

View File

@ -296,6 +296,12 @@ function check_cpu_flag() {
if lscpu | grep -o "^Flags\b.*: .*\b${HOST_CPU_FLAG}\b" > /dev/null; then
return 0
else
# AMD CPUs report invtsc as constant_tsc; check for equivalence
if [ "${HOST_CPU_FLAG}" == "invtsc" ] && [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then
if lscpu | grep -o "^Flags\b.*: .*\bconstant_tsc\b" > /dev/null; then
return 0
fi
fi
return 1
fi
fi
@ -465,6 +471,11 @@ function configure_cpu() {
x2apic xgetbv1 xsave xsaveopt; do
CPU+=$(configure_cpu_flag "${FLAG}")
done
# AMD CPUs with constant_tsc need explicit TSC flags for macOS stability
# constant_tsc is AMD's equivalent of Intel's invtsc
if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ] && check_cpu_flag invtsc; then
CPU+=",+tsc,+tsc-deadline,+invtsc"
fi
fi
# Disable S3 support in the VM to prevent macOS suspending during install