On Wed, 10 Sep 2025 10:15:00 -0700 srinivas pandruvada srinivas.pandruvada@linux.intel.com wrote:
On Wed, 2025-09-10 at 11:36 -0500, Aaron Rainbolt wrote:
On Wed, 30 Apr 2025 16:29:09 +0200 "Rafael J. Wysocki" rafael@kernel.org wrote:
On Tue, Apr 29, 2025 at 11:07 PM Srinivas Pandruvada srinivas.pandruvada@linux.intel.com wrote:
When turbo mode is unavailable on a Skylake-X system, executing the command: "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo" results in an unchecked MSR access error: WRMSR to 0x199 (attempted to write 0x0000000100001300).
This issue was reproduced on an OEM (Original Equipment Manufacturer) system and is not a common problem across all Skylake-X systems.
This error occurs because the MSR 0x199 Turbo Engage Bit (bit 32) is set when turbo mode is disabled. The issue arises when intel_pstate fails to detect that turbo mode is disabled. Here intel_pstate relies on MSR_IA32_MISC_ENABLE bit 38 to determine the status of turbo mode. However, on this system, bit 38 is not set even when turbo mode is disabled.
According to the Intel Software Developer's Manual (SDM), the BIOS sets this bit during platform initialization to enable or disable opportunistic processor performance operations. Logically, this bit should be set in such cases. However, the SDM also specifies that "OS and applications must use CPUID leaf 06H to detect processors with opportunistic processor performance operations enabled."
Therefore, in addition to checking MSR_IA32_MISC_ENABLE bit 38, verify that CPUID.06H:EAX[1] is 0 to accurately determine if turbo mode is disabled.
Fixes: 4521e1a0ce17 ("cpufreq: intel_pstate: Reflect current no_turbo state correctly") Signed-off-by: Srinivas Pandruvada
srinivas.pandruvada@linux.intel.com Cc: stable@vger.kernel.org
drivers/cpufreq/intel_pstate.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c index f41ed0b9e610..ba9bf06f1c77 100644 --- a/drivers/cpufreq/intel_pstate.c +++ b/drivers/cpufreq/intel_pstate.c @@ -598,6 +598,9 @@ static bool turbo_is_disabled(void) { u64 misc_en;
+ if (!cpu_feature_enabled(X86_FEATURE_IDA)) + return true;
rdmsrl(MSR_IA32_MISC_ENABLE, misc_en);
return !!(misc_en & MSR_IA32_MISC_ENABLE_TURBO_DISABLE); --
Applied as a fix for 6.15-rc, thanks!
FYI, this seems to have broken turbo boost on some Clevo systems with an Intel Core i9-14900HX CPU. These CPUs obviously support turbo boost, and kernels without this commit have turbo boost working properly, but after this commit turbo boost is stuck disabled and cannot be enabled by writing to /sys/devices/system/cpu/intel_pstate/no_turbo. I made a bug report about this against Ubuntu's kernel at [1], which is the only report I know that is able to point to this commit as having broken things. However, it looks like an Arch Linux user [2] and a Gentoo user [3] are running into the same thing.
As the bug report suggested, the system boots with no turbo, it must be forcefully turned ON by writing to this attribute. I wonder if there is a BIOS option to turn ON turbo on this system?
I just double-checked the BIOS settings, there does not appear to be any setting related to turbo boost there. The closest there is, is overclocking settings, which comes with warnings about possibly causing the system to become unbootable, thus I think those settings are for true overclocking and not turbo boost.
This processor itself is capable of up to 5.8 GHz turbo.
I will try to find contact at Clevo.
We can try to reduce scope of this change to non HWP only where there is unchecked MSR issue.
That sounds like a good idea to me.
Thanks, Srinivas
[1] https://bugs.launchpad.net/ubuntu/+source/linux-hwe-6.14/+bug/2122531
[2] https://bbs.archlinux.org/viewtopic.php?id=305564
[3] https://forums.gentoo.org/viewtopic-p-8866128.html?sid=e97619cff0d9c79c2eea2...