Commit 7eac3bd3 authored by Artem Bityutskiy's avatar Artem Bityutskiy Committed by Rafael J. Wysocki

intel_idle: Fix SPR C6 optimization

The Sapphire Rapids (SPR) C6 optimization was added to the end of the
'spr_idle_state_table_update()' function. However, the function has a
'return' which may happen before the optimization has a chance to run.
And this may prevent the optimization from happening.

This is an unlikely scenario, but possible if user boots with, say,
the 'intel_idle.preferred_cstates=6' kernel boot option.

This patch fixes the issue by eliminating the problematic 'return'
statement.

Fixes: 3a9cf77b ("intel_idle: add core C6 optimization for SPR")
Suggested-by: default avatarJan Beulich <jbeulich@suse.com>
Reported-by: default avatarJan Beulich <jbeulich@suse.com>
Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
[ rjw: Minor changelog edits ]
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 39c184a6
...@@ -1581,11 +1581,9 @@ static void __init spr_idle_state_table_update(void) ...@@ -1581,11 +1581,9 @@ static void __init spr_idle_state_table_update(void)
unsigned long long msr; unsigned long long msr;
/* Check if user prefers C1E over C1. */ /* Check if user prefers C1E over C1. */
if (preferred_states_mask & BIT(2)) { if ((preferred_states_mask & BIT(2)) &&
if (preferred_states_mask & BIT(1)) !(preferred_states_mask & BIT(1))) {
/* Both can't be enabled, stick to the defaults. */ /* Disable C1 and enable C1E. */
return;
spr_cstates[0].flags |= CPUIDLE_FLAG_UNUSABLE; spr_cstates[0].flags |= CPUIDLE_FLAG_UNUSABLE;
spr_cstates[1].flags &= ~CPUIDLE_FLAG_UNUSABLE; spr_cstates[1].flags &= ~CPUIDLE_FLAG_UNUSABLE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment