Lines Matching refs:c

38 static void check_memory_type_self_snoop_errata(struct cpuinfo_x86 *c)  in check_memory_type_self_snoop_errata()  argument
40 switch (c->x86_vfm) { in check_memory_type_self_snoop_errata()
66 static void probe_xeon_phi_r3mwait(struct cpuinfo_x86 *c) in probe_xeon_phi_r3mwait() argument
72 if (c->x86 != 6) in probe_xeon_phi_r3mwait()
74 switch (c->x86_vfm) { in probe_xeon_phi_r3mwait()
85 set_cpu_cap(c, X86_FEATURE_RING3MWAIT); in probe_xeon_phi_r3mwait()
89 if (c == &boot_cpu_data) in probe_xeon_phi_r3mwait()
130 static bool bad_spectre_microcode(struct cpuinfo_x86 *c) in bad_spectre_microcode() argument
138 if (cpu_has(c, X86_FEATURE_HYPERVISOR)) in bad_spectre_microcode()
142 if (c->x86_vfm == spectre_bad_microcodes[i].vfm && in bad_spectre_microcode()
143 c->x86_stepping == spectre_bad_microcodes[i].stepping) in bad_spectre_microcode()
144 return (c->microcode <= spectre_bad_microcodes[i].microcode); in bad_spectre_microcode()
157 static void detect_tme_early(struct cpuinfo_x86 *c) in detect_tme_early() argument
166 clear_cpu_cap(c, X86_FEATURE_TME); in detect_tme_early()
181 c->x86_phys_bits -= keyid_bits; in detect_tme_early()
186 void intel_unlock_cpuid_leafs(struct cpuinfo_x86 *c) in intel_unlock_cpuid_leafs() argument
191 if (c->x86_vfm < INTEL_PENTIUM_M_DOTHAN) in intel_unlock_cpuid_leafs()
199 c->cpuid_level = cpuid_eax(0); in intel_unlock_cpuid_leafs()
202 static void early_init_intel(struct cpuinfo_x86 *c) in early_init_intel() argument
206 if (c->x86 >= 6 && !cpu_has(c, X86_FEATURE_IA64)) in early_init_intel()
207 c->microcode = intel_get_microcode_revision(); in early_init_intel()
210 if ((cpu_has(c, X86_FEATURE_SPEC_CTRL) || in early_init_intel()
211 cpu_has(c, X86_FEATURE_INTEL_STIBP) || in early_init_intel()
212 cpu_has(c, X86_FEATURE_IBRS) || cpu_has(c, X86_FEATURE_IBPB) || in early_init_intel()
213 cpu_has(c, X86_FEATURE_STIBP)) && bad_spectre_microcode(c)) { in early_init_intel()
233 if (c->x86_vfm == INTEL_ATOM_BONNELL && c->x86_stepping <= 2 && in early_init_intel()
234 c->microcode < 0x20e) { in early_init_intel()
236 clear_cpu_cap(c, X86_FEATURE_PSE); in early_init_intel()
240 set_cpu_cap(c, X86_FEATURE_SYSENTER32); in early_init_intel()
243 if (c->x86 == 15 && c->x86_cache_alignment == 64) in early_init_intel()
244 c->x86_cache_alignment = 128; in early_init_intel()
248 if (c->x86_vfm == INTEL_P4_PRESCOTT && in early_init_intel()
249 (c->x86_stepping == 0x3 || c->x86_stepping == 0x4)) in early_init_intel()
250 c->x86_phys_bits = 36; in early_init_intel()
262 if (c->x86_power & (1 << 8)) { in early_init_intel()
263 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); in early_init_intel()
264 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC); in early_init_intel()
265 } else if ((c->x86_vfm >= INTEL_P4_PRESCOTT && c->x86_vfm <= INTEL_P4_CEDARMILL) || in early_init_intel()
266 (c->x86_vfm >= INTEL_CORE_YONAH && c->x86_vfm <= INTEL_IVYBRIDGE)) { in early_init_intel()
267 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); in early_init_intel()
271 switch (c->x86_vfm) { in early_init_intel()
276 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC_S3); in early_init_intel()
291 if (c->x86_vfm >= INTEL_PENTIUM_PRO && in early_init_intel()
292 c->x86_vfm <= INTEL_CORE_YONAH) in early_init_intel()
293 clear_cpu_cap(c, X86_FEATURE_PAT); in early_init_intel()
303 if (c->x86_vfm >= INTEL_PENTIUM_M_DOTHAN) { in early_init_intel()
307 set_cpu_cap(c, X86_FEATURE_REP_GOOD); in early_init_intel()
325 if (c->x86_vfm == INTEL_QUARK_X1000) { in early_init_intel()
330 check_memory_type_self_snoop_errata(c); in early_init_intel()
336 if (cpu_has(c, X86_FEATURE_TME)) in early_init_intel()
337 detect_tme_early(c); in early_init_intel()
340 static void bsp_init_intel(struct cpuinfo_x86 *c) in bsp_init_intel() argument
342 resctrl_cpu_detect(c); in bsp_init_intel()
363 static void intel_smp_check(struct cpuinfo_x86 *c) in intel_smp_check() argument
366 if (!c->cpu_index) in intel_smp_check()
372 if (c->x86_vfm >= INTEL_FAM5_START && c->x86_vfm < INTEL_PENTIUM_MMX && in intel_smp_check()
373 c->x86_stepping >= 1 && c->x86_stepping <= 4) { in intel_smp_check()
390 static void intel_workarounds(struct cpuinfo_x86 *c) in intel_workarounds() argument
399 clear_cpu_bug(c, X86_BUG_F00F); in intel_workarounds()
400 if (c->x86_vfm >= INTEL_FAM5_START && c->x86_vfm < INTEL_QUARK_X1000) { in intel_workarounds()
403 set_cpu_bug(c, X86_BUG_F00F); in intel_workarounds()
415 if ((c->x86_vfm == INTEL_PENTIUM_II_KLAMATH && c->x86_stepping < 3) || in intel_workarounds()
416 c->x86_vfm < INTEL_PENTIUM_II_KLAMATH) in intel_workarounds()
417 clear_cpu_cap(c, X86_FEATURE_SEP); in intel_workarounds()
426 set_cpu_cap(c, X86_FEATURE_PAE); in intel_workarounds()
434 if (c->x86_vfm == INTEL_P4_WILLAMETTE && c->x86_stepping == 1) { in intel_workarounds()
448 if (boot_cpu_has(X86_FEATURE_APIC) && c->x86_vfm == INTEL_PENTIUM_75 && in intel_workarounds()
449 (c->x86_stepping < 0x6 || c->x86_stepping == 0xb)) in intel_workarounds()
450 set_cpu_bug(c, X86_BUG_11AP); in intel_workarounds()
460 if (c->x86_vfm >= INTEL_PENTIUM_PRO) in intel_workarounds()
464 intel_smp_check(c); in intel_workarounds()
467 static void intel_workarounds(struct cpuinfo_x86 *c) in intel_workarounds() argument
472 static void srat_detect_node(struct cpuinfo_x86 *c) in srat_detect_node() argument
489 static void init_cpuid_fault(struct cpuinfo_x86 *c) in init_cpuid_fault() argument
495 set_cpu_cap(c, X86_FEATURE_CPUID_FAULT); in init_cpuid_fault()
499 static void init_intel_misc_features(struct cpuinfo_x86 *c) in init_intel_misc_features() argument
510 init_cpuid_fault(c); in init_intel_misc_features()
511 probe_xeon_phi_r3mwait(c); in init_intel_misc_features()
536 static void init_intel(struct cpuinfo_x86 *c) in init_intel() argument
538 early_init_intel(c); in init_intel()
540 intel_workarounds(c); in init_intel()
542 init_intel_cacheinfo(c); in init_intel()
544 if (c->cpuid_level > 9) { in init_intel()
548 set_cpu_cap(c, X86_FEATURE_ARCH_PERFMON); in init_intel()
551 if (cpu_has(c, X86_FEATURE_XMM2)) in init_intel()
552 set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); in init_intel()
559 set_cpu_cap(c, X86_FEATURE_BTS); in init_intel()
561 set_cpu_cap(c, X86_FEATURE_PEBS); in init_intel()
565 (c->x86_vfm == INTEL_CORE2_DUNNINGTON || in init_intel()
566 c->x86_vfm == INTEL_NEHALEM_EX || in init_intel()
567 c->x86_vfm == INTEL_WESTMERE_EX)) in init_intel()
568 set_cpu_bug(c, X86_BUG_CLFLUSH_MONITOR); in init_intel()
571 (c->x86_vfm == INTEL_ATOM_GOLDMONT || in init_intel()
572 c->x86_vfm == INTEL_LUNARLAKE_M)) in init_intel()
573 set_cpu_bug(c, X86_BUG_MONITOR); in init_intel()
576 if (c->x86 == 15) in init_intel()
577 c->x86_cache_alignment = c->x86_clflush_size * 2; in init_intel()
584 if (c->x86 == 6) { in init_intel()
585 unsigned int l2 = c->x86_cache_size; in init_intel()
588 switch (c->x86_model) { in init_intel()
599 else if (c->x86_stepping == 0 || c->x86_stepping == 5) in init_intel()
610 strcpy(c->x86_model_id, p); in init_intel()
615 set_cpu_cap(c, X86_FEATURE_PREFER_YMM); in init_intel()
618 srat_detect_node(c); in init_intel()
620 init_ia32_feat_ctl(c); in init_intel()
622 init_intel_misc_features(c); in init_intel()
626 intel_init_thermal(c); in init_intel()
630 static unsigned int intel_size_cache(struct cpuinfo_x86 *c, unsigned int size) in intel_size_cache() argument
638 if (c->x86_vfm == INTEL_PENTIUM_III_TUALATIN && size == 0) in intel_size_cache()
645 if (c->x86_vfm == INTEL_QUARK_X1000) in intel_size_cache()
710 static void intel_detect_tlb(struct cpuinfo_x86 *c) in intel_detect_tlb() argument
716 if (c->cpuid_level < 2) in intel_detect_tlb()