For hybrid CPU core designs from recent Intel Core (Ultra) processors to ARM big.LIITTLE, a patch series was posted today in seeking to enhance the generic ACPI processor idle driver around processors with multiple types of CPU cores.
The “acpi_idle” Linux driver manages the CPU power states based on the system’s ACPI tables. With the patches posted today the ACPI idle driver would be able to take into account different CPU cores on a system. While Intel and ARM processors are mentioned in the patch cover letter, it’s worth noting that modern Intel Linux systems typically rely on the Intel-optimized “intel_idle” driver rather than this generic “acpi_idle” driver. So these patches would mostly be of benefit to ARM big.LITTLE and these patches were worked on by China’s Kylin OS and Phytium.
The main ACPI idle driver patch explains of the per-core handling improvement:
“Current implementations of hybrid architectures (e.g., ARM64 big.LITTLE and Intel Alder Lake) feature CPU cores with different exit latencies. Using a single driver to describe_LPI states for all core types is therefore suboptimal. This is further supported by ACPI specification 8.4.4.1 which states: “In a processor hierarchy, each node has its own _LPI low-power states specific to that node.”
To address these limitations, we replace the monolithic idle driver with a per-CPU model. This approach enables accurate idle state representation for each core type”
The patches are now under review on the Linux kernel mailing list.