> > But then here you only emulate it for VMX, which then results in SVM guests > going wobbly. > > Also, on Intel, the moment you advertise APERFMPERF, we'll try and read > MSR_PLATFORM_INFO / MSR_TURBO_RATIO_LIMIT*, I don't suppose you're > passing those through as well? > init_freq_invariance(void) is trying read MSR_PLATFORM_INFO / MSR_TURBO_RATIO_LIMIT*, should we add a check of turbo status in init_freq_invariance, to avoid the reading? It is unnecessary to call intel_set_max_freq_ratio If turbo is disabled diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index fe3ab9632f3b..54fb88323293 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -2009,6 +2009,9 @@ static void init_freq_invariance(void) if (smp_processor_id() != 0 || !boot_cpu_has(X86_FEATURE_APERFMPERF)) return; + if (turbo_disabled()) + return; + if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) ret = intel_set_max_freq_ratio(); -Li