aboutsummaryrefslogtreecommitdiff
path: root/src/common/cpu_features.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/cpu_features.cpp')
-rw-r--r--src/common/cpu_features.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/common/cpu_features.cpp b/src/common/cpu_features.cpp
index 93eecb1dc5..c7f6e6f036 100644
--- a/src/common/cpu_features.cpp
+++ b/src/common/cpu_features.cpp
@@ -227,8 +227,10 @@ const CPUCaps g_cpu_caps = [] {
// AMD CPUs have no leaf 0x15 (Zen 4 stops at 0x10): measure their invariant TSC too, or every
// guest clock read (CNTPCT, which games read thousands of times a frame) goes through the
- // host's much slower QueryPerformanceCounter.
- if (caps.invariant_tsc && caps.tsc_frequency == 0) {
+ // host's much slower QueryPerformanceCounter. Intel CPUs that have the leaf but report no
+ // crystal frequency (e.g. Coffee Lake) keep the OS clock: an i5-9400F crashed at launch on the
+ // measured RDTSC clock.
+ if (max_std_fn < 0x15 && caps.invariant_tsc && caps.tsc_frequency == 0) {
caps.tsc_frequency = X64::EstimateRDTSCFrequency();
}