]> git.baikalelectronics.ru Git - kernel.git/commit
intel_idle: Fix the 'preferred_cstates' module parameter
authorArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Wed, 27 Apr 2022 06:08:52 +0000 (09:08 +0300)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 27 Apr 2022 18:36:47 +0000 (20:36 +0200)
commit944c474e0422fe62c971b5373fc2b8ff058c28a7
tree2436aab1b29506062b8a69bef5d49176d58b142f
parent7c464de09a7344a2cfcff7733684bbcf4ce79cc5
intel_idle: Fix the 'preferred_cstates' module parameter

Problem description.

When user boots kernel up with the 'intel_idle.preferred_cstates=4' option,
we enable C1E and disable C1 states on Sapphire Rapids Xeon (SPR). In order
for C1E to work on SPR, we have to enable the C1E promotion bit on all
CPUs.  However, we enable it only on one CPU.

Fix description.

The 'intel_idle' driver already has the infrastructure for disabling C1E
promotion on every CPU. This patch uses the same infrastructure for
enabling C1E promotion on every CPU. It changes the boolean
'disable_promotion_to_c1e' variable to a tri-state 'c1e_promotion'
variable.

Tested on a 2-socket SPR system. I verified the following combinations:

 * C1E promotion enabled and disabled in BIOS.
 * Booted with and without the 'intel_idle.preferred_cstates=4' kernel
   argument.

In all 4 cases C1E promotion was correctly set on all CPUs.

Also tested on an old Broadwell system, just to make sure it does not cause
a regression. C1E promotion was correctly disabled on that system, both C1
and C1E were exposed (as expected).

Fixes: ed5baa6912eb ("intel_idle: add 'preferred_cstates' module argument")
Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
[ rjw: Minor changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/idle/intel_idle.c