Turbo Boost Max 3.0 Support For Skylake Fixed With Linux 4.15

It turns out up to now that Intel Skylake CPUs featuring Turbo Boost Max 3.0 (TBM3) may have not actually been working correctly for hitting this maximum frequency when the system is sustaining single-threaded workloads. The patch by Intel's Srinivas Pandruvada explains:
Ev Kontsevoy reported that he can't see the presence of "/proc/sys/kernel/sched_itmt_enabled" on i9-7900x with Asrock x299 Taichi system even if he enabled "Turbo 3.0" in the BIOS.So for at least some Skylake systems with Turbo Boost Max 3.0 support (e.g. the Core i9 7900 series), TBM3 support should be fixed up. I'll be running some tests on my Skylake X systems to look more closely at their behavior. Keep in mind TBM3 isn't to be confused with conventional Intel Turbo Boost found on most of their CPU line-up.
The problem is that even if one core max is 200MHz more than others, the current implementation couldn't enumerate that with the way the system is configured.
The system by default configured for legacy mode (no HWP or speed shift technology), in this mode only way we can enumerate via the mail box interface as implemented in this driver. We were planing to only use this driver for Broadwell, but we need to extend this because some Skylake system has same issue as Broadwell systems.
On this system BIOS allows to change to HWP mode, where we expect that we can enumerate favored core with ACPI-CPPC. But on this system the core priority is 0xff for all cores in CPPC object. So this is not an option.
Hence this change allows Skylake systems to be enumerate favored core similar to Broadwell in legacy mode.
The x86 platform driver updates also feature changes to the Dell SMIBIOS driver for newer Dell laptops, a fix for the Intel Cherry Trail battery management driver, WMI hotkey driver updates, lightbar LED support in the ASUS WMI driver, power button suspend support on the Dell Latitude 7275, and various other fixes and code improvements.
The complete list of x86 platform driver changes can be found via this pull request.
5 Comments