intel_idle: Add AlderLake support
authorZhang Rui <rui.zhang@intel.com>
Fri, 15 Apr 2022 09:39:51 +0000 (17:39 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 28 Apr 2022 12:50:09 +0000 (14:50 +0200)
commitd1cf8bbfed1edc5108220342ab39e4544d55fbc3
tree63c5edc0713f5445102ab424db027fd0da7b8d7c
parent7eac3bd38d18cd3317756649921b8264ddfee692
intel_idle: Add AlderLake support

Similar to SPR, the C1 and C1E states on ADL are mutually exclusive.
Only one of them can be enabled at a time.

But contrast to SPR, which usually has a strong latency requirement
as a Xeon processor, C1E is preferred on ADL for better energy
efficiency.

Add custom C-state tables for ADL with both C1 and C1E, and

 1. Enable the "C1E promotion" bit in MSR_IA32_POWER_CTL and mark C1
    with the CPUIDLE_FLAG_UNUSABLE flag, so C1 is not available by
    default.

 2. Add support for the "preferred_cstates" module parameter, so that
    users can choose to use C1 instead of C1E by booting with
    "intel_idle.preferred_cstates=2".

Separate custom C-state tables are introduced for the ADL mobile and
desktop processors, because of the exit latency differences between
these two variants, especially with respect to PC10.

Signed-off-by: Zhang Rui <rui.zhang@intel.com>
[ rjw: Changelog edits, code rearrangement ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/idle/intel_idle.c