AMD P-State Preferred Core Handling Being Enabled For Linux

Written by Michael Larabel in AMD on 9 August 2023 at 06:21 AM EDT. 28 Comments
A new set of patches have been posted for the Linux kernel that implement AMD P-State Preferred Core handling for the amd-pstate driver.

AMD CPUs since the Ryzen 3000 series (Zen 2) have had the notion of "preferred cores" that via ACPI CPPC are communicated to the OS and could be shown under Windows with the likes of AMD Ryzen Master. Now we have AMD Linux engineers working on properly leveraging the "preferred cores" handling for the modern AMD P-State CPU frequency scaling driver that's seen much work over the past two years.

AMD Ryzen CPUs

Meng Li of AMD described this Preferred Cores work for amd-pstate as:
"The core frequency is subjected to the process variation in semiconductors. Not all cores are able to reach the maximum frequency respecting the infrastructure limits. Consequently, AMD has redefined the concept of maximum frequency of a part. This means that a fraction of cores can reach maximum frequency. To find the best process scheduling policy for a given scenario, OS needs to know the core ordering informed by the platform through highest performance capability register of the CPPC interface.

Earlier implementations of AMD Pstate Preferred Core only support a static core ranking and targeted performance. Now it has the ability to dynamically change the preferred core based on the workload and platform conditions and accounting for thermals and aging.

AMD Pstate driver utilizes the functions and data structures provided by the ITMT architecture to enable the scheduler to favor scheduling on cores which can be get a higher frequency with lower voltage. We call it AMD Pstate Preferred Core.

Here sched_set_itmt_core_prio() is called to set priorities and sched_set_itmt_support() is called to enable ITMT feature. AMD Pstate driver uses the highest performance value to indicate the priority of CPU. The higher value has a higher priority.

AMD Pstate driver will provide an initial core ordering at boot time. It relies on the CPPC interface to communicate the core ranking to the operating system and scheduler to make sure that OS is choosing the cores with highest performance firstly for scheduling the process. When AMD Pstate driver receives a message with the highest performance change, it will update the core ranking."

This patch series has the initial work enabling AMD P-State Preferred Core handling for Linux. Though due to this being the first iteration of the patches and not yet having had time for review and testing, it may end up coming too close for seeing it in the v6.6 cycle and thus may be punted off for a later kernel cycle before we'll find this great feature in mainline. In any event it's nice to see this support materializing.

With the current patches, AMD Preferred Core behavior isn't enabled by default but requires the new "amd_prefcore=enable" kernel module option be set for activating it. The AMD P-State Preferred Core handling also depends upon processor and power firmware support.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via

Popular News This Week