Skip to content

Commit f557e0d

Browse files
dedekindrafaeljw
authored andcommitted
intel_idle: add Granite Rapids Xeon D support
Add Granite Rapids Xeon D C-states support: C1, C1E, C6, and C6P. The C-states are basically the same as in Granite Rapids Xeon SP/AP, but characteristics (latency, target residency) are a bit different. Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Link: https://patch.msgid.link/20241107115608.52233-1-artem.bityutskiy@linux.intel.com [ rjw: Changelog edit ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 parent ee702fd commit f557e0d

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

drivers/idle/intel_idle.c

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,6 +1069,47 @@ static struct cpuidle_state gnr_cstates[] __initdata = {
10691069
.enter = NULL }
10701070
};
10711071

1072+
static struct cpuidle_state gnrd_cstates[] __initdata = {
1073+
{
1074+
.name = "C1",
1075+
.desc = "MWAIT 0x00",
1076+
.flags = MWAIT2flg(0x00),
1077+
.exit_latency = 1,
1078+
.target_residency = 1,
1079+
.enter = &intel_idle,
1080+
.enter_s2idle = intel_idle_s2idle, },
1081+
{
1082+
.name = "C1E",
1083+
.desc = "MWAIT 0x01",
1084+
.flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
1085+
.exit_latency = 4,
1086+
.target_residency = 4,
1087+
.enter = &intel_idle,
1088+
.enter_s2idle = intel_idle_s2idle, },
1089+
{
1090+
.name = "C6",
1091+
.desc = "MWAIT 0x20",
1092+
.flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED |
1093+
CPUIDLE_FLAG_INIT_XSTATE |
1094+
CPUIDLE_FLAG_PARTIAL_HINT_MATCH,
1095+
.exit_latency = 220,
1096+
.target_residency = 650,
1097+
.enter = &intel_idle,
1098+
.enter_s2idle = intel_idle_s2idle, },
1099+
{
1100+
.name = "C6P",
1101+
.desc = "MWAIT 0x21",
1102+
.flags = MWAIT2flg(0x21) | CPUIDLE_FLAG_TLB_FLUSHED |
1103+
CPUIDLE_FLAG_INIT_XSTATE |
1104+
CPUIDLE_FLAG_PARTIAL_HINT_MATCH,
1105+
.exit_latency = 240,
1106+
.target_residency = 750,
1107+
.enter = &intel_idle,
1108+
.enter_s2idle = intel_idle_s2idle, },
1109+
{
1110+
.enter = NULL }
1111+
};
1112+
10721113
static struct cpuidle_state atom_cstates[] __initdata = {
10731114
{
10741115
.name = "C1E",
@@ -1508,6 +1549,12 @@ static const struct idle_cpu idle_cpu_gnr __initconst = {
15081549
.use_acpi = true,
15091550
};
15101551

1552+
static const struct idle_cpu idle_cpu_gnrd __initconst = {
1553+
.state_table = gnrd_cstates,
1554+
.disable_promotion_to_c1e = true,
1555+
.use_acpi = true,
1556+
};
1557+
15111558
static const struct idle_cpu idle_cpu_avn __initconst = {
15121559
.state_table = avn_cstates,
15131560
.disable_promotion_to_c1e = true,
@@ -1593,6 +1640,7 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
15931640
X86_MATCH_VFM(INTEL_SAPPHIRERAPIDS_X, &idle_cpu_spr),
15941641
X86_MATCH_VFM(INTEL_EMERALDRAPIDS_X, &idle_cpu_spr),
15951642
X86_MATCH_VFM(INTEL_GRANITERAPIDS_X, &idle_cpu_gnr),
1643+
X86_MATCH_VFM(INTEL_GRANITERAPIDS_D, &idle_cpu_gnrd),
15961644
X86_MATCH_VFM(INTEL_XEON_PHI_KNL, &idle_cpu_knl),
15971645
X86_MATCH_VFM(INTEL_XEON_PHI_KNM, &idle_cpu_knl),
15981646
X86_MATCH_VFM(INTEL_ATOM_GOLDMONT, &idle_cpu_bxt),

0 commit comments

Comments
 (0)