Commit b11ec63a authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

Merge back cpufreq material for v6.11.

parents a1ff5978 acfc429e
...@@ -406,7 +406,7 @@ control its functionality at the system level. They are located in the ...@@ -406,7 +406,7 @@ control its functionality at the system level. They are located in the
``/sys/devices/system/cpu/amd_pstate/`` directory and affect all CPUs. ``/sys/devices/system/cpu/amd_pstate/`` directory and affect all CPUs.
``status`` ``status``
Operation mode of the driver: "active", "passive" or "disable". Operation mode of the driver: "active", "passive", "guided" or "disable".
"active" "active"
The driver is functional and in the ``active mode`` The driver is functional and in the ``active mode``
......
...@@ -470,6 +470,7 @@ ...@@ -470,6 +470,7 @@
#define X86_FEATURE_BHI_CTRL (21*32+ 2) /* "" BHI_DIS_S HW control available */ #define X86_FEATURE_BHI_CTRL (21*32+ 2) /* "" BHI_DIS_S HW control available */
#define X86_FEATURE_CLEAR_BHB_HW (21*32+ 3) /* "" BHI_DIS_S HW control enabled */ #define X86_FEATURE_CLEAR_BHB_HW (21*32+ 3) /* "" BHI_DIS_S HW control enabled */
#define X86_FEATURE_CLEAR_BHB_LOOP_ON_VMEXIT (21*32+ 4) /* "" Clear branch history at vmexit using SW loop */ #define X86_FEATURE_CLEAR_BHB_LOOP_ON_VMEXIT (21*32+ 4) /* "" Clear branch history at vmexit using SW loop */
#define X86_FEATURE_FAST_CPPC (21*32 + 5) /* "" AMD Fast CPPC */
/* /*
* BUG word(s) * BUG word(s)
......
...@@ -45,6 +45,7 @@ static const struct cpuid_bit cpuid_bits[] = { ...@@ -45,6 +45,7 @@ static const struct cpuid_bit cpuid_bits[] = {
{ X86_FEATURE_HW_PSTATE, CPUID_EDX, 7, 0x80000007, 0 }, { X86_FEATURE_HW_PSTATE, CPUID_EDX, 7, 0x80000007, 0 },
{ X86_FEATURE_CPB, CPUID_EDX, 9, 0x80000007, 0 }, { X86_FEATURE_CPB, CPUID_EDX, 9, 0x80000007, 0 },
{ X86_FEATURE_PROC_FEEDBACK, CPUID_EDX, 11, 0x80000007, 0 }, { X86_FEATURE_PROC_FEEDBACK, CPUID_EDX, 11, 0x80000007, 0 },
{ X86_FEATURE_FAST_CPPC, CPUID_EDX, 15, 0x80000007, 0 },
{ X86_FEATURE_MBA, CPUID_EBX, 6, 0x80000008, 0 }, { X86_FEATURE_MBA, CPUID_EBX, 6, 0x80000008, 0 },
{ X86_FEATURE_SMBA, CPUID_EBX, 2, 0x80000020, 0 }, { X86_FEATURE_SMBA, CPUID_EBX, 2, 0x80000020, 0 },
{ X86_FEATURE_BMEC, CPUID_EBX, 3, 0x80000020, 0 }, { X86_FEATURE_BMEC, CPUID_EBX, 3, 0x80000020, 0 },
......
...@@ -71,6 +71,7 @@ config X86_AMD_PSTATE_DEFAULT_MODE ...@@ -71,6 +71,7 @@ config X86_AMD_PSTATE_DEFAULT_MODE
config X86_AMD_PSTATE_UT config X86_AMD_PSTATE_UT
tristate "selftest for AMD Processor P-State driver" tristate "selftest for AMD Processor P-State driver"
depends on X86 && ACPI_PROCESSOR depends on X86 && ACPI_PROCESSOR
depends on X86_AMD_PSTATE
default n default n
help help
This kernel module is used for testing. It's safe to say M here. This kernel module is used for testing. It's safe to say M here.
......
This diff is collapsed.
...@@ -99,6 +99,7 @@ struct amd_cpudata { ...@@ -99,6 +99,7 @@ struct amd_cpudata {
u32 policy; u32 policy;
u64 cppc_cap1_cached; u64 cppc_cap1_cached;
bool suspended; bool suspended;
s16 epp_default;
}; };
#endif /* _LINUX_AMD_PSTATE_H */ #endif /* _LINUX_AMD_PSTATE_H */
...@@ -608,16 +608,15 @@ EXPORT_SYMBOL_GPL(cpufreq_policy_transition_delay_us); ...@@ -608,16 +608,15 @@ EXPORT_SYMBOL_GPL(cpufreq_policy_transition_delay_us);
static ssize_t show_boost(struct kobject *kobj, static ssize_t show_boost(struct kobject *kobj,
struct kobj_attribute *attr, char *buf) struct kobj_attribute *attr, char *buf)
{ {
return sprintf(buf, "%d\n", cpufreq_driver->boost_enabled); return sysfs_emit(buf, "%d\n", cpufreq_driver->boost_enabled);
} }
static ssize_t store_boost(struct kobject *kobj, struct kobj_attribute *attr, static ssize_t store_boost(struct kobject *kobj, struct kobj_attribute *attr,
const char *buf, size_t count) const char *buf, size_t count)
{ {
int ret, enable; bool enable;
ret = sscanf(buf, "%d", &enable); if (kstrtobool(buf, &enable))
if (ret != 1 || enable < 0 || enable > 1)
return -EINVAL; return -EINVAL;
if (cpufreq_boost_trigger_state(enable)) { if (cpufreq_boost_trigger_state(enable)) {
...@@ -641,10 +640,10 @@ static ssize_t show_local_boost(struct cpufreq_policy *policy, char *buf) ...@@ -641,10 +640,10 @@ static ssize_t show_local_boost(struct cpufreq_policy *policy, char *buf)
static ssize_t store_local_boost(struct cpufreq_policy *policy, static ssize_t store_local_boost(struct cpufreq_policy *policy,
const char *buf, size_t count) const char *buf, size_t count)
{ {
int ret, enable; int ret;
bool enable;
ret = kstrtoint(buf, 10, &enable); if (kstrtobool(buf, &enable))
if (ret || enable < 0 || enable > 1)
return -EINVAL; return -EINVAL;
if (!cpufreq_driver->boost_enabled) if (!cpufreq_driver->boost_enabled)
...@@ -739,7 +738,7 @@ static struct cpufreq_governor *cpufreq_parse_governor(char *str_governor) ...@@ -739,7 +738,7 @@ static struct cpufreq_governor *cpufreq_parse_governor(char *str_governor)
static ssize_t show_##file_name \ static ssize_t show_##file_name \
(struct cpufreq_policy *policy, char *buf) \ (struct cpufreq_policy *policy, char *buf) \
{ \ { \
return sprintf(buf, "%u\n", policy->object); \ return sysfs_emit(buf, "%u\n", policy->object); \
} }
show_one(cpuinfo_min_freq, cpuinfo.min_freq); show_one(cpuinfo_min_freq, cpuinfo.min_freq);
...@@ -760,11 +759,11 @@ static ssize_t show_scaling_cur_freq(struct cpufreq_policy *policy, char *buf) ...@@ -760,11 +759,11 @@ static ssize_t show_scaling_cur_freq(struct cpufreq_policy *policy, char *buf)
freq = arch_freq_get_on_cpu(policy->cpu); freq = arch_freq_get_on_cpu(policy->cpu);
if (freq) if (freq)
ret = sprintf(buf, "%u\n", freq); ret = sysfs_emit(buf, "%u\n", freq);
else if (cpufreq_driver->setpolicy && cpufreq_driver->get) else if (cpufreq_driver->setpolicy && cpufreq_driver->get)
ret = sprintf(buf, "%u\n", cpufreq_driver->get(policy->cpu)); ret = sysfs_emit(buf, "%u\n", cpufreq_driver->get(policy->cpu));
else else
ret = sprintf(buf, "%u\n", policy->cur); ret = sysfs_emit(buf, "%u\n", policy->cur);
return ret; return ret;
} }
...@@ -798,9 +797,9 @@ static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy, ...@@ -798,9 +797,9 @@ static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy,
unsigned int cur_freq = __cpufreq_get(policy); unsigned int cur_freq = __cpufreq_get(policy);
if (cur_freq) if (cur_freq)
return sprintf(buf, "%u\n", cur_freq); return sysfs_emit(buf, "%u\n", cur_freq);
return sprintf(buf, "<unknown>\n"); return sysfs_emit(buf, "<unknown>\n");
} }
/* /*
...@@ -809,12 +808,11 @@ static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy, ...@@ -809,12 +808,11 @@ static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy,
static ssize_t show_scaling_governor(struct cpufreq_policy *policy, char *buf) static ssize_t show_scaling_governor(struct cpufreq_policy *policy, char *buf)
{ {
if (policy->policy == CPUFREQ_POLICY_POWERSAVE) if (policy->policy == CPUFREQ_POLICY_POWERSAVE)
return sprintf(buf, "powersave\n"); return sysfs_emit(buf, "powersave\n");
else if (policy->policy == CPUFREQ_POLICY_PERFORMANCE) else if (policy->policy == CPUFREQ_POLICY_PERFORMANCE)
return sprintf(buf, "performance\n"); return sysfs_emit(buf, "performance\n");
else if (policy->governor) else if (policy->governor)
return scnprintf(buf, CPUFREQ_NAME_PLEN, "%s\n", return sysfs_emit(buf, "%s\n", policy->governor->name);
policy->governor->name);
return -EINVAL; return -EINVAL;
} }
...@@ -873,7 +871,7 @@ static ssize_t show_scaling_available_governors(struct cpufreq_policy *policy, ...@@ -873,7 +871,7 @@ static ssize_t show_scaling_available_governors(struct cpufreq_policy *policy,
struct cpufreq_governor *t; struct cpufreq_governor *t;
if (!has_target()) { if (!has_target()) {
i += sprintf(buf, "performance powersave"); i += sysfs_emit(buf, "performance powersave");
goto out; goto out;
} }
...@@ -882,11 +880,11 @@ static ssize_t show_scaling_available_governors(struct cpufreq_policy *policy, ...@@ -882,11 +880,11 @@ static ssize_t show_scaling_available_governors(struct cpufreq_policy *policy,
if (i >= (ssize_t) ((PAGE_SIZE / sizeof(char)) if (i >= (ssize_t) ((PAGE_SIZE / sizeof(char))
- (CPUFREQ_NAME_LEN + 2))) - (CPUFREQ_NAME_LEN + 2)))
break; break;
i += scnprintf(&buf[i], CPUFREQ_NAME_PLEN, "%s ", t->name); i += sysfs_emit_at(buf, i, "%s ", t->name);
} }
mutex_unlock(&cpufreq_governor_mutex); mutex_unlock(&cpufreq_governor_mutex);
out: out:
i += sprintf(&buf[i], "\n"); i += sysfs_emit_at(buf, i, "\n");
return i; return i;
} }
...@@ -896,7 +894,7 @@ ssize_t cpufreq_show_cpus(const struct cpumask *mask, char *buf) ...@@ -896,7 +894,7 @@ ssize_t cpufreq_show_cpus(const struct cpumask *mask, char *buf)
unsigned int cpu; unsigned int cpu;
for_each_cpu(cpu, mask) { for_each_cpu(cpu, mask) {
i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), "%u ", cpu); i += sysfs_emit_at(buf, i, "%u ", cpu);
if (i >= (PAGE_SIZE - 5)) if (i >= (PAGE_SIZE - 5))
break; break;
} }
...@@ -904,7 +902,7 @@ ssize_t cpufreq_show_cpus(const struct cpumask *mask, char *buf) ...@@ -904,7 +902,7 @@ ssize_t cpufreq_show_cpus(const struct cpumask *mask, char *buf)
/* Remove the extra space at the end */ /* Remove the extra space at the end */
i--; i--;
i += sprintf(&buf[i], "\n"); i += sysfs_emit_at(buf, i, "\n");
return i; return i;
} }
EXPORT_SYMBOL_GPL(cpufreq_show_cpus); EXPORT_SYMBOL_GPL(cpufreq_show_cpus);
...@@ -947,7 +945,7 @@ static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy, ...@@ -947,7 +945,7 @@ static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy,
static ssize_t show_scaling_setspeed(struct cpufreq_policy *policy, char *buf) static ssize_t show_scaling_setspeed(struct cpufreq_policy *policy, char *buf)
{ {
if (!policy->governor || !policy->governor->show_setspeed) if (!policy->governor || !policy->governor->show_setspeed)
return sprintf(buf, "<unsupported>\n"); return sysfs_emit(buf, "<unsupported>\n");
return policy->governor->show_setspeed(policy, buf); return policy->governor->show_setspeed(policy, buf);
} }
...@@ -961,8 +959,8 @@ static ssize_t show_bios_limit(struct cpufreq_policy *policy, char *buf) ...@@ -961,8 +959,8 @@ static ssize_t show_bios_limit(struct cpufreq_policy *policy, char *buf)
int ret; int ret;
ret = cpufreq_driver->bios_limit(policy->cpu, &limit); ret = cpufreq_driver->bios_limit(policy->cpu, &limit);
if (!ret) if (!ret)
return sprintf(buf, "%u\n", limit); return sysfs_emit(buf, "%u\n", limit);
return sprintf(buf, "%u\n", policy->cpuinfo.max_freq); return sysfs_emit(buf, "%u\n", policy->cpuinfo.max_freq);
} }
cpufreq_freq_attr_ro_perm(cpuinfo_cur_freq, 0400); cpufreq_freq_attr_ro_perm(cpuinfo_cur_freq, 0400);
......
...@@ -300,6 +300,7 @@ static struct cpufreq_driver *intel_pstate_driver __read_mostly; ...@@ -300,6 +300,7 @@ static struct cpufreq_driver *intel_pstate_driver __read_mostly;
#define HYBRID_SCALING_FACTOR 78741 #define HYBRID_SCALING_FACTOR 78741
#define HYBRID_SCALING_FACTOR_MTL 80000 #define HYBRID_SCALING_FACTOR_MTL 80000
#define HYBRID_SCALING_FACTOR_LNL 86957
static int hybrid_scaling_factor = HYBRID_SCALING_FACTOR; static int hybrid_scaling_factor = HYBRID_SCALING_FACTOR;
...@@ -1631,7 +1632,7 @@ void notify_hwp_interrupt(void) ...@@ -1631,7 +1632,7 @@ void notify_hwp_interrupt(void)
unsigned long flags; unsigned long flags;
u64 value; u64 value;
if (!hwp_active || !boot_cpu_has(X86_FEATURE_HWP_NOTIFY)) if (!hwp_active || !cpu_feature_enabled(X86_FEATURE_HWP_NOTIFY))
return; return;
rdmsrl_safe(MSR_HWP_STATUS, &value); rdmsrl_safe(MSR_HWP_STATUS, &value);
...@@ -1659,7 +1660,7 @@ static void intel_pstate_disable_hwp_interrupt(struct cpudata *cpudata) ...@@ -1659,7 +1660,7 @@ static void intel_pstate_disable_hwp_interrupt(struct cpudata *cpudata)
{ {
bool cancel_work; bool cancel_work;
if (!boot_cpu_has(X86_FEATURE_HWP_NOTIFY)) if (!cpu_feature_enabled(X86_FEATURE_HWP_NOTIFY))
return; return;
/* wrmsrl_on_cpu has to be outside spinlock as this can result in IPC */ /* wrmsrl_on_cpu has to be outside spinlock as this can result in IPC */
...@@ -2367,54 +2368,54 @@ static const struct pstate_funcs knl_funcs = { ...@@ -2367,54 +2368,54 @@ static const struct pstate_funcs knl_funcs = {
.get_val = core_get_val, .get_val = core_get_val,
}; };
#define X86_MATCH(model, policy) \ #define X86_MATCH(vfm, policy) \
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, INTEL_FAM6_##model, \ X86_MATCH_VFM_FEATURE(vfm, X86_FEATURE_APERFMPERF, &policy)
X86_FEATURE_APERFMPERF, &policy)
static const struct x86_cpu_id intel_pstate_cpu_ids[] = { static const struct x86_cpu_id intel_pstate_cpu_ids[] = {
X86_MATCH(SANDYBRIDGE, core_funcs), X86_MATCH(INTEL_SANDYBRIDGE, core_funcs),
X86_MATCH(SANDYBRIDGE_X, core_funcs), X86_MATCH(INTEL_SANDYBRIDGE_X, core_funcs),
X86_MATCH(ATOM_SILVERMONT, silvermont_funcs), X86_MATCH(INTEL_ATOM_SILVERMONT, silvermont_funcs),
X86_MATCH(IVYBRIDGE, core_funcs), X86_MATCH(INTEL_IVYBRIDGE, core_funcs),
X86_MATCH(HASWELL, core_funcs), X86_MATCH(INTEL_HASWELL, core_funcs),
X86_MATCH(BROADWELL, core_funcs), X86_MATCH(INTEL_BROADWELL, core_funcs),
X86_MATCH(IVYBRIDGE_X, core_funcs), X86_MATCH(INTEL_IVYBRIDGE_X, core_funcs),
X86_MATCH(HASWELL_X, core_funcs), X86_MATCH(INTEL_HASWELL_X, core_funcs),
X86_MATCH(HASWELL_L, core_funcs), X86_MATCH(INTEL_HASWELL_L, core_funcs),
X86_MATCH(HASWELL_G, core_funcs), X86_MATCH(INTEL_HASWELL_G, core_funcs),
X86_MATCH(BROADWELL_G, core_funcs), X86_MATCH(INTEL_BROADWELL_G, core_funcs),
X86_MATCH(ATOM_AIRMONT, airmont_funcs), X86_MATCH(INTEL_ATOM_AIRMONT, airmont_funcs),
X86_MATCH(SKYLAKE_L, core_funcs), X86_MATCH(INTEL_SKYLAKE_L, core_funcs),
X86_MATCH(BROADWELL_X, core_funcs), X86_MATCH(INTEL_BROADWELL_X, core_funcs),
X86_MATCH(SKYLAKE, core_funcs), X86_MATCH(INTEL_SKYLAKE, core_funcs),
X86_MATCH(BROADWELL_D, core_funcs), X86_MATCH(INTEL_BROADWELL_D, core_funcs),
X86_MATCH(XEON_PHI_KNL, knl_funcs), X86_MATCH(INTEL_XEON_PHI_KNL, knl_funcs),
X86_MATCH(XEON_PHI_KNM, knl_funcs), X86_MATCH(INTEL_XEON_PHI_KNM, knl_funcs),
X86_MATCH(ATOM_GOLDMONT, core_funcs), X86_MATCH(INTEL_ATOM_GOLDMONT, core_funcs),
X86_MATCH(ATOM_GOLDMONT_PLUS, core_funcs), X86_MATCH(INTEL_ATOM_GOLDMONT_PLUS, core_funcs),
X86_MATCH(SKYLAKE_X, core_funcs), X86_MATCH(INTEL_SKYLAKE_X, core_funcs),
X86_MATCH(COMETLAKE, core_funcs), X86_MATCH(INTEL_COMETLAKE, core_funcs),
X86_MATCH(ICELAKE_X, core_funcs), X86_MATCH(INTEL_ICELAKE_X, core_funcs),
X86_MATCH(TIGERLAKE, core_funcs), X86_MATCH(INTEL_TIGERLAKE, core_funcs),
X86_MATCH(SAPPHIRERAPIDS_X, core_funcs), X86_MATCH(INTEL_SAPPHIRERAPIDS_X, core_funcs),
X86_MATCH(EMERALDRAPIDS_X, core_funcs), X86_MATCH(INTEL_EMERALDRAPIDS_X, core_funcs),
{} {}
}; };
MODULE_DEVICE_TABLE(x86cpu, intel_pstate_cpu_ids); MODULE_DEVICE_TABLE(x86cpu, intel_pstate_cpu_ids);
#ifdef CONFIG_ACPI #ifdef CONFIG_ACPI
static const struct x86_cpu_id intel_pstate_cpu_oob_ids[] __initconst = { static const struct x86_cpu_id intel_pstate_cpu_oob_ids[] __initconst = {
X86_MATCH(BROADWELL_D, core_funcs), X86_MATCH(INTEL_BROADWELL_D, core_funcs),
X86_MATCH(BROADWELL_X, core_funcs), X86_MATCH(INTEL_BROADWELL_X, core_funcs),
X86_MATCH(SKYLAKE_X, core_funcs), X86_MATCH(INTEL_SKYLAKE_X, core_funcs),
X86_MATCH(ICELAKE_X, core_funcs), X86_MATCH(INTEL_ICELAKE_X, core_funcs),
X86_MATCH(SAPPHIRERAPIDS_X, core_funcs), X86_MATCH(INTEL_SAPPHIRERAPIDS_X, core_funcs),
X86_MATCH(INTEL_EMERALDRAPIDS_X, core_funcs),
{} {}
}; };
#endif #endif
static const struct x86_cpu_id intel_pstate_cpu_ee_disable_ids[] = { static const struct x86_cpu_id intel_pstate_cpu_ee_disable_ids[] = {
X86_MATCH(KABYLAKE, core_funcs), X86_MATCH(INTEL_KABYLAKE, core_funcs),
{} {}
}; };
...@@ -3350,14 +3351,13 @@ static inline void intel_pstate_request_control_from_smm(void) {} ...@@ -3350,14 +3351,13 @@ static inline void intel_pstate_request_control_from_smm(void) {}
#define INTEL_PSTATE_HWP_BROADWELL 0x01 #define INTEL_PSTATE_HWP_BROADWELL 0x01
#define X86_MATCH_HWP(model, hwp_mode) \ #define X86_MATCH_HWP(vfm, hwp_mode) \
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, INTEL_FAM6_##model, \ X86_MATCH_VFM_FEATURE(vfm, X86_FEATURE_HWP, hwp_mode)
X86_FEATURE_HWP, hwp_mode)
static const struct x86_cpu_id hwp_support_ids[] __initconst = { static const struct x86_cpu_id hwp_support_ids[] __initconst = {
X86_MATCH_HWP(BROADWELL_X, INTEL_PSTATE_HWP_BROADWELL), X86_MATCH_HWP(INTEL_BROADWELL_X, INTEL_PSTATE_HWP_BROADWELL),
X86_MATCH_HWP(BROADWELL_D, INTEL_PSTATE_HWP_BROADWELL), X86_MATCH_HWP(INTEL_BROADWELL_D, INTEL_PSTATE_HWP_BROADWELL),
X86_MATCH_HWP(ANY, 0), X86_MATCH_HWP(INTEL_ANY, 0),
{} {}
}; };
...@@ -3390,15 +3390,19 @@ static const struct x86_cpu_id intel_epp_default[] = { ...@@ -3390,15 +3390,19 @@ static const struct x86_cpu_id intel_epp_default[] = {
* which can result in one core turbo frequency for * which can result in one core turbo frequency for
* AlderLake Mobile CPUs. * AlderLake Mobile CPUs.
*/ */
X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L, HWP_SET_DEF_BALANCE_PERF_EPP(102)), X86_MATCH_VFM(INTEL_ALDERLAKE_L, HWP_SET_DEF_BALANCE_PERF_EPP(102)),
X86_MATCH_INTEL_FAM6_MODEL(SAPPHIRERAPIDS_X, HWP_SET_DEF_BALANCE_PERF_EPP(32)), X86_MATCH_VFM(INTEL_SAPPHIRERAPIDS_X, HWP_SET_DEF_BALANCE_PERF_EPP(32)),
X86_MATCH_INTEL_FAM6_MODEL(METEORLAKE_L, HWP_SET_EPP_VALUES(HWP_EPP_POWERSAVE, X86_MATCH_VFM(INTEL_METEORLAKE_L, HWP_SET_EPP_VALUES(HWP_EPP_POWERSAVE,
HWP_EPP_BALANCE_POWERSAVE, 115, 16)), 179, 64, 16)),
X86_MATCH_VFM(INTEL_ARROWLAKE, HWP_SET_EPP_VALUES(HWP_EPP_POWERSAVE,
179, 64, 16)),
{} {}
}; };
static const struct x86_cpu_id intel_hybrid_scaling_factor[] = { static const struct x86_cpu_id intel_hybrid_scaling_factor[] = {
X86_MATCH_INTEL_FAM6_MODEL(METEORLAKE_L, HYBRID_SCALING_FACTOR_MTL), X86_MATCH_VFM(INTEL_METEORLAKE_L, HYBRID_SCALING_FACTOR_MTL),
X86_MATCH_VFM(INTEL_ARROWLAKE, HYBRID_SCALING_FACTOR_MTL),
X86_MATCH_VFM(INTEL_LUNARLAKE_M, HYBRID_SCALING_FACTOR_LNL),
{} {}
}; };
......
...@@ -520,10 +520,10 @@ static struct cpufreq_driver centrino_driver = { ...@@ -520,10 +520,10 @@ static struct cpufreq_driver centrino_driver = {
* or ASCII model IDs. * or ASCII model IDs.
*/ */
static const struct x86_cpu_id centrino_ids[] = { static const struct x86_cpu_id centrino_ids[] = {
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, 9, X86_FEATURE_EST, NULL), X86_MATCH_VFM_FEATURE(IFM( 6, 9), X86_FEATURE_EST, NULL),
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 6, 13, X86_FEATURE_EST, NULL), X86_MATCH_VFM_FEATURE(IFM( 6, 13), X86_FEATURE_EST, NULL),
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 15, 3, X86_FEATURE_EST, NULL), X86_MATCH_VFM_FEATURE(IFM(15, 3), X86_FEATURE_EST, NULL),
X86_MATCH_VENDOR_FAM_MODEL_FEATURE(INTEL, 15, 4, X86_FEATURE_EST, NULL), X86_MATCH_VFM_FEATURE(IFM(15, 4), X86_FEATURE_EST, NULL),
{} {}
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment