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 <rui.zhang@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
9ebcfadb06
commit
2d798d9f59
1 changed files with 22 additions and 1 deletions
|
@ -93,6 +93,7 @@ struct rapl_defaults {
|
||||||
u64 (*compute_time_window)(struct rapl_package *rp, u64 val,
|
u64 (*compute_time_window)(struct rapl_package *rp, u64 val,
|
||||||
bool to_raw);
|
bool to_raw);
|
||||||
unsigned int dram_domain_energy_unit;
|
unsigned int dram_domain_energy_unit;
|
||||||
|
unsigned int psys_domain_energy_unit;
|
||||||
};
|
};
|
||||||
static struct rapl_defaults *rapl_defaults;
|
static struct rapl_defaults *rapl_defaults;
|
||||||
|
|
||||||
|
@ -533,12 +534,23 @@ static void rapl_init_domains(struct rapl_package *rp)
|
||||||
for (j = 0; j < RAPL_DOMAIN_REG_MAX; j++)
|
for (j = 0; j < RAPL_DOMAIN_REG_MAX; j++)
|
||||||
rd->regs[j] = rp->priv->regs[i][j];
|
rd->regs[j] = rp->priv->regs[i][j];
|
||||||
|
|
||||||
if (i == RAPL_DOMAIN_DRAM) {
|
switch (i) {
|
||||||
|
case RAPL_DOMAIN_DRAM:
|
||||||
rd->domain_energy_unit =
|
rd->domain_energy_unit =
|
||||||
rapl_defaults->dram_domain_energy_unit;
|
rapl_defaults->dram_domain_energy_unit;
|
||||||
if (rd->domain_energy_unit)
|
if (rd->domain_energy_unit)
|
||||||
pr_info("DRAM domain energy unit %dpj\n",
|
pr_info("DRAM domain energy unit %dpj\n",
|
||||||
rd->domain_energy_unit);
|
rd->domain_energy_unit);
|
||||||
|
break;
|
||||||
|
case RAPL_DOMAIN_PLATFORM:
|
||||||
|
rd->domain_energy_unit =
|
||||||
|
rapl_defaults->psys_domain_energy_unit;
|
||||||
|
if (rd->domain_energy_unit)
|
||||||
|
pr_info("Platform domain energy unit %dpj\n",
|
||||||
|
rd->domain_energy_unit);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
rd++;
|
rd++;
|
||||||
}
|
}
|
||||||
|
@ -919,6 +931,14 @@ static const struct rapl_defaults rapl_defaults_hsw_server = {
|
||||||
.dram_domain_energy_unit = 15300,
|
.dram_domain_energy_unit = 15300,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct rapl_defaults rapl_defaults_spr_server = {
|
||||||
|
.check_unit = rapl_check_unit_core,
|
||||||
|
.set_floor_freq = set_floor_freq_default,
|
||||||
|
.compute_time_window = rapl_compute_time_window_core,
|
||||||
|
.dram_domain_energy_unit = 15300,
|
||||||
|
.psys_domain_energy_unit = 1000000000,
|
||||||
|
};
|
||||||
|
|
||||||
static const struct rapl_defaults rapl_defaults_byt = {
|
static const struct rapl_defaults rapl_defaults_byt = {
|
||||||
.floor_freq_reg_addr = IOSF_CPU_POWER_BUDGET_CTL_BYT,
|
.floor_freq_reg_addr = IOSF_CPU_POWER_BUDGET_CTL_BYT,
|
||||||
.check_unit = rapl_check_unit_atom,
|
.check_unit = rapl_check_unit_atom,
|
||||||
|
@ -978,6 +998,7 @@ static const struct x86_cpu_id rapl_ids[] __initconst = {
|
||||||
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE_L, &rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE_L, &rapl_defaults_core),
|
||||||
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE, &rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(COMETLAKE, &rapl_defaults_core),
|
||||||
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, &rapl_defaults_core),
|
X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, &rapl_defaults_core),
|
||||||
|
X86_MATCH_INTEL_FAM6_MODEL(SAPPHIRERAPIDS_X, &rapl_defaults_spr_server),
|
||||||
|
|
||||||
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT, &rapl_defaults_byt),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT, &rapl_defaults_byt),
|
||||||
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, &rapl_defaults_cht),
|
X86_MATCH_INTEL_FAM6_MODEL(ATOM_AIRMONT, &rapl_defaults_cht),
|
||||||
|
|
Loading…
Add table
Reference in a new issue