Linux Lands Fix For Intel Hybrid CPU Frequency Scaling When Disabling E-Cores
The Intel P-State CPU frequency scaling driver for the Linux kernel has received a fix to an issue that could lead to inadequate CPU frequency scaling behavior when running on a hybrid processor with E cores disable.
For those running a modern Intel Core "Alder Lake" or "Raptor Lake" processor and opted to disable the E cores if just wanting to focus on the performance cores to avoid any P/E core scheduling behavior oddities or for other reasons, the Intel P-State driver to this point might not actually behave correctly but has been fixed with code merged this week for Linux 6.5. As it's a driver fix, it will likely be back-ported to existing Linux stable kernel series as well.
The Intel P-State driver change is to use the correct scaling factor when mapping the hardware P-States (HWP) performance levels to frequency values on hybrid-capable systems that have disabled E-cores. Intel Linux engineer Srinivas Pandruvada explained of the issue in the patch:
That fix was sent in this week with various other power management changes as part of a secondary pull request for Linux 6.5. Last week meanwhile was the main set of power management updates merged for the Linux 6.5 kernel.
For those running a modern Intel Core "Alder Lake" or "Raptor Lake" processor and opted to disable the E cores if just wanting to focus on the performance cores to avoid any P/E core scheduling behavior oddities or for other reasons, the Intel P-State driver to this point might not actually behave correctly but has been fixed with code merged this week for Linux 6.5. As it's a driver fix, it will likely be back-ported to existing Linux stable kernel series as well.
The Intel P-State driver change is to use the correct scaling factor when mapping the hardware P-States (HWP) performance levels to frequency values on hybrid-capable systems that have disabled E-cores. Intel Linux engineer Srinivas Pandruvada explained of the issue in the patch:
"Some system BIOS configuration may provide option to disable E-cores. As part of this change, CPUID feature for hybrid (Leaf 7 sub leaf 0, EDX[15] = 0) may not be set. But HWP performance limits will still be using a scaling factor like any other hybrid enabled system.
The current check for applying scaling factor will fail when hybrid CPUID feature is not set. Only way to make sure that scaling should be applied by checking CPPC nominal frequency and nominal performance. If CPPC nominal frequency and nominal performance is defined and nominal frequency is not in multiples of 100MHz of nominal performance, then use hybrid scaling factor.
The above check will fail for non hybrid capable systems as they don't publish nominal frequency field in CPPC, so this function can be used for all HWP systems without additional cpu model check."
That fix was sent in this week with various other power management changes as part of a secondary pull request for Linux 6.5. Last week meanwhile was the main set of power management updates merged for the Linux 6.5 kernel.
3 Comments