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:
Родитель
9ebcfadb06
Коммит
2d798d9f59
|
@ -93,6 +93,7 @@ struct rapl_defaults {
|
|||
u64 (*compute_time_window)(struct rapl_package *rp, u64 val,
|
||||
bool to_raw);
|
||||
unsigned int dram_domain_energy_unit;
|
||||
unsigned int psys_domain_energy_unit;
|
||||
};
|
||||
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++)
|
||||
rd->regs[j] = rp->priv->regs[i][j];
|
||||
|
||||
if (i == RAPL_DOMAIN_DRAM) {
|
||||
switch (i) {
|
||||
case RAPL_DOMAIN_DRAM:
|
||||
rd->domain_energy_unit =
|
||||
rapl_defaults->dram_domain_energy_unit;
|
||||
if (rd->domain_energy_unit)
|
||||
pr_info("DRAM domain energy unit %dpj\n",
|
||||
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++;
|
||||
}
|
||||
|
@ -919,6 +931,14 @@ static const struct rapl_defaults rapl_defaults_hsw_server = {
|
|||
.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 = {
|
||||
.floor_freq_reg_addr = IOSF_CPU_POWER_BUDGET_CTL_BYT,
|
||||
.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, &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_AIRMONT, &rapl_defaults_cht),
|
||||
|
|
Загрузка…
Ссылка в новой задаче