Skip to content

Commit 2d798d9

Browse files
zhang-ruirafaeljw
authored andcommitted
powercap: intel_rapl: add support for Sapphire Rapids
RAPL on SPR behaves similar to Haswell server, except that SPR uses a fixed energy unit (1 Joule) for the PSYS RAPL domain. Signed-off-by: Zhang Rui <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent 9ebcfad commit 2d798d9

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

drivers/powercap/intel_rapl_common.c

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ struct rapl_defaults {
9393
u64 (*compute_time_window)(struct rapl_package *rp, u64 val,
9494
bool to_raw);
9595
unsigned int dram_domain_energy_unit;
96+
unsigned int psys_domain_energy_unit;
9697
};
9798
static struct rapl_defaults *rapl_defaults;
9899

@@ -533,12 +534,23 @@ static void rapl_init_domains(struct rapl_package *rp)
533534
for (j = 0; j < RAPL_DOMAIN_REG_MAX; j++)
534535
rd->regs[j] = rp->priv->regs[i][j];
535536

536-
if (i == RAPL_DOMAIN_DRAM) {
537+
switch (i) {
538+
case RAPL_DOMAIN_DRAM:
537539
rd->domain_energy_unit =
538540
rapl_defaults->dram_domain_energy_unit;
539541
if (rd->domain_energy_unit)
540542
pr_info("DRAM domain energy unit %dpj\n",
541543
rd->domain_energy_unit);
544+
break;
545+
case RAPL_DOMAIN_PLATFORM:
546+
rd->domain_energy_unit =
547+
rapl_defaults->psys_domain_energy_unit;
548+
if (rd->domain_energy_unit)
549+
pr_info("Platform domain energy unit %dpj\n",
550+
rd->domain_energy_unit);
551+
break;
552+
default:
553+
break;
542554
}
543555
rd++;
544556
}
@@ -919,6 +931,14 @@ static const struct rapl_defaults rapl_defaults_hsw_server = {
919931
.dram_domain_energy_unit = 15300,
920932
};
921933

934+
static const struct rapl_defaults rapl_defaults_spr_server = {
935+
.check_unit = rapl_check_unit_core,
936+
.set_floor_freq = set_floor_freq_default,
937+
.compute_time_window = rapl_compute_time_window_core,
938+
.dram_domain_energy_unit = 15300,
939+
.psys_domain_energy_unit = 1000000000,
940+
};
941+
922942
static const struct rapl_defaults rapl_defaults_byt = {
923943
.floor_freq_reg_addr = IOSF_CPU_POWER_BUDGET_CTL_BYT,
924944
.check_unit = rapl_check_unit_atom,
@@ -978,6 +998,7 @@ static const struct x86_cpu_id rapl_ids[] __initconst = {
978998
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE_L, &rapl_defaults_core),
979999
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE, &rapl_defaults_core),
9801000
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, &rapl_defaults_core),
1001+
X86_MATCH_INTEL_FAM6_MODEL(SAPPHIRERAPIDS_X, &rapl_defaults_spr_server),
9811002

9821003
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT, &rapl_defaults_byt),
9831004
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, &rapl_defaults_cht),

0 commit comments

Comments
 (0)