Skip to content

Commit 89ecf09

Browse files
committed
Merge branches 'pm-cpufreq' and 'pm-cpuidle'
* pm-cpufreq: cpufreq: intel_pstate: Fix fast-switch fallback path * pm-cpuidle: intel_idle: add SnowRidge C-state table MAINTAINERS: include governors into CPU IDLE TIME MANAGEMENT FRAMEWORK
3 parents 977a3b0 + be12834 + 9cf93f0 commit 89ecf09

File tree

3 files changed

+41
-3
lines changed

3 files changed

+41
-3
lines changed

MAINTAINERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4588,7 +4588,7 @@ B: https://bugzilla.kernel.org
45884588
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
45894589
F: Documentation/admin-guide/pm/cpuidle.rst
45904590
F: Documentation/driver-api/pm/cpuidle.rst
4591-
F: drivers/cpuidle/*
4591+
F: drivers/cpuidle/
45924592
F: include/linux/cpuidle.h
45934593

45944594
CPU POWER MONITORING SUBSYSTEM

drivers/cpufreq/intel_pstate.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3086,7 +3086,6 @@ static int __init intel_pstate_init(void)
30863086
intel_pstate.attr = hwp_cpufreq_attrs;
30873087
intel_cpufreq.attr = hwp_cpufreq_attrs;
30883088
intel_cpufreq.flags |= CPUFREQ_NEED_UPDATE_LIMITS;
3089-
intel_cpufreq.fast_switch = NULL;
30903089
intel_cpufreq.adjust_perf = intel_cpufreq_adjust_perf;
30913090
if (!default_driver)
30923091
default_driver = &intel_pstate;

drivers/idle/intel_idle.c

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -963,6 +963,39 @@ static struct cpuidle_state dnv_cstates[] __initdata = {
963963
.enter = NULL }
964964
};
965965

966+
/*
967+
* Note, depending on HW and FW revision, SnowRidge SoC may or may not support
968+
* C6, and this is indicated in the CPUID mwait leaf.
969+
*/
970+
static struct cpuidle_state snr_cstates[] __initdata = {
971+
{
972+
.name = "C1",
973+
.desc = "MWAIT 0x00",
974+
.flags = MWAIT2flg(0x00),
975+
.exit_latency = 2,
976+
.target_residency = 2,
977+
.enter = &intel_idle,
978+
.enter_s2idle = intel_idle_s2idle, },
979+
{
980+
.name = "C1E",
981+
.desc = "MWAIT 0x01",
982+
.flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
983+
.exit_latency = 15,
984+
.target_residency = 25,
985+
.enter = &intel_idle,
986+
.enter_s2idle = intel_idle_s2idle, },
987+
{
988+
.name = "C6",
989+
.desc = "MWAIT 0x20",
990+
.flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
991+
.exit_latency = 130,
992+
.target_residency = 500,
993+
.enter = &intel_idle,
994+
.enter_s2idle = intel_idle_s2idle, },
995+
{
996+
.enter = NULL }
997+
};
998+
966999
static const struct idle_cpu idle_cpu_nehalem __initconst = {
9671000
.state_table = nehalem_cstates,
9681001
.auto_demotion_disable_flags = NHM_C1_AUTO_DEMOTE | NHM_C3_AUTO_DEMOTE,
@@ -1084,6 +1117,12 @@ static const struct idle_cpu idle_cpu_dnv __initconst = {
10841117
.use_acpi = true,
10851118
};
10861119

1120+
static const struct idle_cpu idle_cpu_snr __initconst = {
1121+
.state_table = snr_cstates,
1122+
.disable_promotion_to_c1e = true,
1123+
.use_acpi = true,
1124+
};
1125+
10871126
static const struct x86_cpu_id intel_idle_ids[] __initconst = {
10881127
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM_EP, &idle_cpu_nhx),
10891128
X86_MATCH_INTEL_FAM6_MODEL(NEHALEM, &idle_cpu_nehalem),
@@ -1122,7 +1161,7 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
11221161
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, &idle_cpu_bxt),
11231162
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_PLUS, &idle_cpu_bxt),
11241163
X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_D, &idle_cpu_dnv),
1125-
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &idle_cpu_dnv),
1164+
X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &idle_cpu_snr),
11261165
{}
11271166
};
11281167

0 commit comments

Comments
 (0)