Skip to content

Commit

Permalink
intel_idle: add core C6 optimization for SPR
Browse files Browse the repository at this point in the history
Add a Sapphire Rapids Xeon C6 optimization, similar to what we have for Sky Lake
Xeon: if package C6 is disabled, adjust C6 exit latency and target residency to
match core C6 values, instead of using the default package C6 values.

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Artem Bityutskiy authored and Rafael J. Wysocki committed Mar 4, 2022
1 parent da0e58c commit 3a9cf77
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions drivers/idle/intel_idle.c
Original file line number Diff line number Diff line change
Expand Up @@ -1578,6 +1578,8 @@ static void __init skx_idle_state_table_update(void)
*/
static void __init spr_idle_state_table_update(void)
{
unsigned long long msr;

/* Check if user prefers C1E over C1. */
if (preferred_states_mask & BIT(2)) {
if (preferred_states_mask & BIT(1))
Expand All @@ -1591,6 +1593,19 @@ static void __init spr_idle_state_table_update(void)
c1e_promotion_enable();
disable_promotion_to_c1e = false;
}

/*
* By default, the C6 state assumes the worst-case scenario of package
* C6. However, if PC6 is disabled, we update the numbers to match
* core C6.
*/
rdmsrl(MSR_PKG_CST_CONFIG_CONTROL, msr);

/* Limit value 2 and above allow for PC6. */
if ((msr & 0x7) < 2) {
spr_cstates[2].exit_latency = 190;
spr_cstates[2].target_residency = 600;
}
}

static bool __init intel_idle_verify_cstate(unsigned int mwait_hint)
Expand Down

0 comments on commit 3a9cf77

Please sign in to comment.