Lines Matching refs:c

92 static void init_amd_k5(struct cpuinfo_x86 *c)  in init_amd_k5()  argument
104 if (c->x86_model == 9 || c->x86_model == 10) { in init_amd_k5()
111 static void init_amd_k6(struct cpuinfo_x86 *c) in init_amd_k6() argument
117 if (c->x86_model < 6) { in init_amd_k6()
119 if (c->x86_model == 0) { in init_amd_k6()
120 clear_cpu_cap(c, X86_FEATURE_APIC); in init_amd_k6()
121 set_cpu_cap(c, X86_FEATURE_PGE); in init_amd_k6()
126 if (c->x86_model == 6 && c->x86_stepping == 1) { in init_amd_k6()
155 if (c->x86_model < 8 || in init_amd_k6()
156 (c->x86_model == 8 && c->x86_stepping < 8)) { in init_amd_k6()
175 if ((c->x86_model == 8 && c->x86_stepping > 7) || in init_amd_k6()
176 c->x86_model == 9 || c->x86_model == 13) { in init_amd_k6()
197 if (c->x86_model == 10) { in init_amd_k6()
205 static void init_amd_k7(struct cpuinfo_x86 *c) in init_amd_k7() argument
215 if (c->x86_model >= 6 && c->x86_model <= 10) { in init_amd_k7()
216 if (!cpu_has(c, X86_FEATURE_XMM)) { in init_amd_k7()
219 set_cpu_cap(c, X86_FEATURE_XMM); in init_amd_k7()
228 if ((c->x86_model == 8 && c->x86_stepping >= 1) || (c->x86_model > 8)) { in init_amd_k7()
238 if (!c->cpu_index) in init_amd_k7()
246 if ((c->x86_model == 6) && ((c->x86_stepping == 0) || in init_amd_k7()
247 (c->x86_stepping == 1))) in init_amd_k7()
251 if ((c->x86_model == 7) && (c->x86_stepping == 0)) in init_amd_k7()
261 if (((c->x86_model == 6) && (c->x86_stepping >= 2)) || in init_amd_k7()
262 ((c->x86_model == 7) && (c->x86_stepping >= 1)) || in init_amd_k7()
263 (c->x86_model > 7)) in init_amd_k7()
264 if (cpu_has(c, X86_FEATURE_MP)) in init_amd_k7()
302 static void srat_detect_node(struct cpuinfo_x86 *c) in srat_detect_node() argument
307 unsigned apicid = c->topo.apicid; in srat_detect_node()
319 x86_cpuinit.fixup_cpu_id(c, node); in srat_detect_node()
341 int ht_nodeid = c->topo.initial_apicid; in srat_detect_node()
353 static void bsp_determine_snp(struct cpuinfo_x86 *c) in bsp_determine_snp() argument
358 if (cpu_has(c, X86_FEATURE_SEV_SNP)) { in bsp_determine_snp()
366 if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && in bsp_determine_snp()
404 static void tsa_init(struct cpuinfo_x86 *c) in tsa_init() argument
406 if (cpu_has(c, X86_FEATURE_HYPERVISOR)) in tsa_init()
409 if (cpu_has(c, X86_FEATURE_ZEN3) || in tsa_init()
410 cpu_has(c, X86_FEATURE_ZEN4)) { in tsa_init()
414 pr_debug("%s: current revision: 0x%x\n", __func__, c->microcode); in tsa_init()
421 static void bsp_init_amd(struct cpuinfo_x86 *c) in bsp_init_amd() argument
423 if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { in bsp_init_amd()
425 if (c->x86 > 0x10 || in bsp_init_amd()
426 (c->x86 == 0x10 && c->x86_model >= 0x2)) { in bsp_init_amd()
435 if (c->x86 == 0x15) { in bsp_init_amd()
450 if (cpu_has(c, X86_FEATURE_MWAITX)) in bsp_init_amd()
455 c->x86 >= 0x15 && c->x86 <= 0x17) { in bsp_init_amd()
458 switch (c->x86) { in bsp_init_amd()
475 resctrl_cpu_detect(c); in bsp_init_amd()
478 switch (c->x86) { in bsp_init_amd()
480 switch (c->x86_model) { in bsp_init_amd()
497 switch (c->x86_model) { in bsp_init_amd()
512 switch (c->x86_model) { in bsp_init_amd()
532 bsp_determine_snp(c); in bsp_init_amd()
533 tsa_init(c); in bsp_init_amd()
535 if (cpu_has(c, X86_FEATURE_GP_ON_USER_CPUID)) in bsp_init_amd()
541 WARN_ONCE(1, "Family 0x%x, model: 0x%x??\n", c->x86, c->x86_model); in bsp_init_amd()
544 static void early_detect_mem_encrypt(struct cpuinfo_x86 *c) in early_detect_mem_encrypt() argument
562 if (c->extended_cpuid_level >= 0x8000001f && (cpuid_eax(0x8000001f) & BIT(0))) in early_detect_mem_encrypt()
579 if (cpu_has(c, X86_FEATURE_SME) || cpu_has(c, X86_FEATURE_SEV)) { in early_detect_mem_encrypt()
590 c->x86_phys_bits -= (cpuid_ebx(0x8000001f) >> 6) & 0x3f; in early_detect_mem_encrypt()
613 static void early_init_amd(struct cpuinfo_x86 *c) in early_init_amd() argument
617 if (c->x86 >= 0xf) in early_init_amd()
618 set_cpu_cap(c, X86_FEATURE_K8); in early_init_amd()
620 rdmsr_safe(MSR_AMD64_PATCH_LEVEL, &c->microcode, &dummy); in early_init_amd()
626 if (c->x86_power & (1 << 8)) { in early_init_amd()
627 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); in early_init_amd()
628 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC); in early_init_amd()
632 if (c->x86_power & BIT(12)) in early_init_amd()
633 set_cpu_cap(c, X86_FEATURE_ACC_POWER); in early_init_amd()
636 if (c->x86_power & BIT(14)) in early_init_amd()
637 set_cpu_cap(c, X86_FEATURE_RAPL); in early_init_amd()
640 set_cpu_cap(c, X86_FEATURE_SYSCALL32); in early_init_amd()
643 if (c->x86 == 5) in early_init_amd()
644 if (c->x86_model == 13 || c->x86_model == 9 || in early_init_amd()
645 (c->x86_model == 8 && c->x86_stepping >= 8)) in early_init_amd()
646 set_cpu_cap(c, X86_FEATURE_K6_MTRR); in early_init_amd()
656 if (c->x86 > 0x16) in early_init_amd()
657 set_cpu_cap(c, X86_FEATURE_EXTD_APICID); in early_init_amd()
658 else if (c->x86 >= 0xf) { in early_init_amd()
664 set_cpu_cap(c, X86_FEATURE_EXTD_APICID); in early_init_amd()
674 set_cpu_cap(c, X86_FEATURE_VMMCALL); in early_init_amd()
677 if (c->x86 == 0x16 && c->x86_model <= 0xf) in early_init_amd()
680 early_detect_mem_encrypt(c); in early_init_amd()
682 if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && !cpu_has(c, X86_FEATURE_IBPB_BRTYPE)) { in early_init_amd()
683 if (c->x86 == 0x17 && boot_cpu_has(X86_FEATURE_AMD_IBPB)) in early_init_amd()
685 else if (c->x86 >= 0x19 && !wrmsrq_safe(MSR_IA32_PRED_CMD, PRED_CMD_SBPB)) { in early_init_amd()
692 static void init_amd_k8(struct cpuinfo_x86 *c) in init_amd_k8() argument
700 set_cpu_cap(c, X86_FEATURE_REP_GOOD); in init_amd_k8()
707 …if (c->x86_model < 0x14 && cpu_has(c, X86_FEATURE_LAHF_LM) && !cpu_has(c, X86_FEATURE_HYPERVISOR))… in init_amd_k8()
708 clear_cpu_cap(c, X86_FEATURE_LAHF_LM); in init_amd_k8()
715 if (!c->x86_model_id[0]) in init_amd_k8()
716 strscpy(c->x86_model_id, "Hammer"); in init_amd_k8()
728 set_cpu_bug(c, X86_BUG_SWAPGS_FENCE); in init_amd_k8()
736 if (c->x86_model > 0x41 || in init_amd_k8()
737 (c->x86_model == 0x41 && c->x86_stepping >= 0x2)) in init_amd_k8()
741 static void init_amd_gh(struct cpuinfo_x86 *c) in init_amd_gh() argument
745 if (c == &boot_cpu_data) in init_amd_gh()
772 set_cpu_bug(c, X86_BUG_AMD_TLB_MMATCH); in init_amd_gh()
780 if (c->x86_model > 0x2 || in init_amd_gh()
781 (c->x86_model == 0x2 && c->x86_stepping >= 0x1)) in init_amd_gh()
785 static void init_amd_ln(struct cpuinfo_x86 *c) in init_amd_ln() argument
810 static void clear_rdrand_cpuid_bit(struct cpuinfo_x86 *c) in clear_rdrand_cpuid_bit() argument
838 clear_cpu_cap(c, X86_FEATURE_RDRAND); in clear_rdrand_cpuid_bit()
842 static void init_amd_jg(struct cpuinfo_x86 *c) in init_amd_jg() argument
849 clear_rdrand_cpuid_bit(c); in init_amd_jg()
852 static void init_amd_bd(struct cpuinfo_x86 *c) in init_amd_bd() argument
860 if ((c->x86_model >= 0x02) && (c->x86_model < 0x20)) { in init_amd_bd()
872 clear_rdrand_cpuid_bit(c); in init_amd_bd()
881 static void fix_erratum_1386(struct cpuinfo_x86 *c) in fix_erratum_1386() argument
897 clear_cpu_cap(c, X86_FEATURE_XSAVES); in fix_erratum_1386()
900 void init_spectral_chicken(struct cpuinfo_x86 *c) in init_spectral_chicken() argument
911 if (!cpu_has(c, X86_FEATURE_HYPERVISOR)) { in init_spectral_chicken()
928 static void init_amd_zen1(struct cpuinfo_x86 *c) in init_amd_zen1() argument
930 fix_erratum_1386(c); in init_amd_zen1()
933 if (!cpu_has(c, X86_FEATURE_HYPERVISOR)) { in init_amd_zen1()
936 if (!cpu_has(c, X86_FEATURE_CPB)) in init_amd_zen1()
937 set_cpu_cap(c, X86_FEATURE_CPB); in init_amd_zen1()
948 if (c->x86_model < 0x30) { in init_amd_zen1()
950 clear_cpu_cap(c, X86_FEATURE_IRPERF); in init_amd_zen1()
975 static void zen2_zenbleed_check(struct cpuinfo_x86 *c) in zen2_zenbleed_check() argument
977 if (cpu_has(c, X86_FEATURE_HYPERVISOR)) in zen2_zenbleed_check()
980 if (!cpu_has(c, X86_FEATURE_AVX)) in zen2_zenbleed_check()
991 static void init_amd_zen2(struct cpuinfo_x86 *c) in init_amd_zen2() argument
993 init_spectral_chicken(c); in init_amd_zen2()
994 fix_erratum_1386(c); in init_amd_zen2()
995 zen2_zenbleed_check(c); in init_amd_zen2()
998 if (c->x86_model == 0x47 && c->x86_stepping == 0x0) { in init_amd_zen2()
999 clear_cpu_cap(c, X86_FEATURE_RDSEED); in init_amd_zen2()
1005 clear_cpu_cap(c, X86_FEATURE_INVLPGB); in init_amd_zen2()
1008 static void init_amd_zen3(struct cpuinfo_x86 *c) in init_amd_zen3() argument
1010 if (!cpu_has(c, X86_FEATURE_HYPERVISOR)) { in init_amd_zen3()
1016 if (!cpu_has(c, X86_FEATURE_BTC_NO)) in init_amd_zen3()
1017 set_cpu_cap(c, X86_FEATURE_BTC_NO); in init_amd_zen3()
1021 static void init_amd_zen4(struct cpuinfo_x86 *c) in init_amd_zen4() argument
1023 if (!cpu_has(c, X86_FEATURE_HYPERVISOR)) in init_amd_zen4()
1030 switch (c->x86_model) { in init_amd_zen4()
1033 clear_cpu_cap(c, X86_FEATURE_V_VMSAVE_VMLOAD); in init_amd_zen4()
1051 static void init_amd_zen5(struct cpuinfo_x86 *c) in init_amd_zen5() argument
1054 clear_cpu_cap(c, X86_FEATURE_RDSEED); in init_amd_zen5()
1060 static void init_amd(struct cpuinfo_x86 *c) in init_amd() argument
1064 early_init_amd(c); in init_amd()
1070 clear_cpu_cap(c, 0*32+31); in init_amd()
1072 if (c->x86 >= 0x10) in init_amd()
1073 set_cpu_cap(c, X86_FEATURE_REP_GOOD); in init_amd()
1076 if (cpu_has(c, X86_FEATURE_FSRM)) in init_amd()
1077 set_cpu_cap(c, X86_FEATURE_FSRS); in init_amd()
1080 if (c->x86 < 6) in init_amd()
1081 clear_cpu_cap(c, X86_FEATURE_MCE); in init_amd()
1083 switch (c->x86) { in init_amd()
1084 case 4: init_amd_k5(c); break; in init_amd()
1085 case 5: init_amd_k6(c); break; in init_amd()
1086 case 6: init_amd_k7(c); break; in init_amd()
1087 case 0xf: init_amd_k8(c); break; in init_amd()
1088 case 0x10: init_amd_gh(c); break; in init_amd()
1089 case 0x12: init_amd_ln(c); break; in init_amd()
1090 case 0x15: init_amd_bd(c); break; in init_amd()
1091 case 0x16: init_amd_jg(c); break; in init_amd()
1098 if (c->x86 >= 0x17) in init_amd()
1102 init_amd_zen1(c); in init_amd()
1104 init_amd_zen2(c); in init_amd()
1106 init_amd_zen3(c); in init_amd()
1108 init_amd_zen4(c); in init_amd()
1110 init_amd_zen5(c); in init_amd()
1116 if ((c->x86 >= 6) && (!cpu_has(c, X86_FEATURE_XSAVEERPTR))) in init_amd()
1117 set_cpu_bug(c, X86_BUG_FXSAVE_LEAK); in init_amd()
1119 cpu_detect_cache_sizes(c); in init_amd()
1121 srat_detect_node(c); in init_amd()
1123 init_amd_cacheinfo(c); in init_amd()
1125 if (cpu_has(c, X86_FEATURE_SVM)) { in init_amd()
1129 clear_cpu_cap(c, X86_FEATURE_SVM); in init_amd()
1133 if (!cpu_has(c, X86_FEATURE_LFENCE_RDTSC) && cpu_has(c, X86_FEATURE_XMM2)) { in init_amd()
1144 set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); in init_amd()
1151 if (c->x86 > 0x11) in init_amd()
1152 set_cpu_cap(c, X86_FEATURE_ARAT); in init_amd()
1155 if (!cpu_has(c, X86_FEATURE_3DNOWPREFETCH)) in init_amd()
1156 if (cpu_has(c, X86_FEATURE_3DNOW) || cpu_has(c, X86_FEATURE_LM)) in init_amd()
1157 set_cpu_cap(c, X86_FEATURE_3DNOWPREFETCH); in init_amd()
1161 set_cpu_bug(c, X86_BUG_SYSRET_SS_ATTRS); in init_amd()
1164 if (cpu_has(c, X86_FEATURE_IRPERF)) in init_amd()
1167 check_null_seg_clears_base(c); in init_amd()
1177 cpu_has(c, X86_FEATURE_AUTOIBRS)) in init_amd()
1181 clear_cpu_cap(c, X86_FEATURE_APIC_MSRS_FENCE); in init_amd()
1184 if (cpu_has(c, X86_FEATURE_TCE)) in init_amd()
1189 static unsigned int amd_size_cache(struct cpuinfo_x86 *c, unsigned int size) in amd_size_cache() argument
1192 if (c->x86 == 6) { in amd_size_cache()
1194 if (c->x86_model == 3 && c->x86_stepping == 0) in amd_size_cache()
1197 if (c->x86_model == 4 && in amd_size_cache()
1198 (c->x86_stepping == 0 || c->x86_stepping == 1)) in amd_size_cache()
1205 static void cpu_detect_tlb_amd(struct cpuinfo_x86 *c) in cpu_detect_tlb_amd() argument
1210 if (c->x86 < 0xf) in cpu_detect_tlb_amd()
1213 if (c->extended_cpuid_level < 0x80000006) in cpu_detect_tlb_amd()
1225 if (c->x86 == 0xf) { in cpu_detect_tlb_amd()
1242 if (c->x86 == 0x15 && c->x86_model <= 0x1f) { in cpu_detect_tlb_amd()
1254 if (cpu_has(c, X86_FEATURE_INVLPGB)) in cpu_detect_tlb_amd()
1325 struct cpuinfo_x86 *c = &cpu_data(smp_processor_id()); in zenbleed_check_cpu() local
1327 zen2_zenbleed_check(c); in zenbleed_check_cpu()