Lines Matching refs:c

88 static void init_amd_k5(struct cpuinfo_x86 *c)  in init_amd_k5()  argument
100 if (c->x86_model == 9 || c->x86_model == 10) { in init_amd_k5()
107 static void init_amd_k6(struct cpuinfo_x86 *c) in init_amd_k6() argument
113 if (c->x86_model < 6) { in init_amd_k6()
115 if (c->x86_model == 0) { in init_amd_k6()
116 clear_cpu_cap(c, X86_FEATURE_APIC); in init_amd_k6()
117 set_cpu_cap(c, X86_FEATURE_PGE); in init_amd_k6()
122 if (c->x86_model == 6 && c->x86_stepping == 1) { in init_amd_k6()
151 if (c->x86_model < 8 || in init_amd_k6()
152 (c->x86_model == 8 && c->x86_stepping < 8)) { in init_amd_k6()
171 if ((c->x86_model == 8 && c->x86_stepping > 7) || in init_amd_k6()
172 c->x86_model == 9 || c->x86_model == 13) { in init_amd_k6()
193 if (c->x86_model == 10) { in init_amd_k6()
201 static void init_amd_k7(struct cpuinfo_x86 *c) in init_amd_k7() argument
211 if (c->x86_model >= 6 && c->x86_model <= 10) { in init_amd_k7()
212 if (!cpu_has(c, X86_FEATURE_XMM)) { in init_amd_k7()
215 set_cpu_cap(c, X86_FEATURE_XMM); in init_amd_k7()
224 if ((c->x86_model == 8 && c->x86_stepping >= 1) || (c->x86_model > 8)) { in init_amd_k7()
234 if (!c->cpu_index) in init_amd_k7()
242 if ((c->x86_model == 6) && ((c->x86_stepping == 0) || in init_amd_k7()
243 (c->x86_stepping == 1))) in init_amd_k7()
247 if ((c->x86_model == 7) && (c->x86_stepping == 0)) in init_amd_k7()
257 if (((c->x86_model == 6) && (c->x86_stepping >= 2)) || in init_amd_k7()
258 ((c->x86_model == 7) && (c->x86_stepping >= 1)) || in init_amd_k7()
259 (c->x86_model > 7)) in init_amd_k7()
260 if (cpu_has(c, X86_FEATURE_MP)) in init_amd_k7()
298 static void srat_detect_node(struct cpuinfo_x86 *c) in srat_detect_node() argument
303 unsigned apicid = c->topo.apicid; in srat_detect_node()
315 x86_cpuinit.fixup_cpu_id(c, node); in srat_detect_node()
337 int ht_nodeid = c->topo.initial_apicid; in srat_detect_node()
349 static void bsp_determine_snp(struct cpuinfo_x86 *c) in bsp_determine_snp() argument
354 if (cpu_has(c, X86_FEATURE_SEV_SNP)) { in bsp_determine_snp()
360 if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && in bsp_determine_snp()
361 c->x86 >= 0x19 && snp_probe_rmptable_info()) { in bsp_determine_snp()
371 static void bsp_init_amd(struct cpuinfo_x86 *c) in bsp_init_amd() argument
373 if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { in bsp_init_amd()
375 if (c->x86 > 0x10 || in bsp_init_amd()
376 (c->x86 == 0x10 && c->x86_model >= 0x2)) { in bsp_init_amd()
385 if (c->x86 == 0x15) { in bsp_init_amd()
400 if (cpu_has(c, X86_FEATURE_MWAITX)) in bsp_init_amd()
405 c->x86 >= 0x15 && c->x86 <= 0x17) { in bsp_init_amd()
408 switch (c->x86) { in bsp_init_amd()
425 resctrl_cpu_detect(c); in bsp_init_amd()
428 switch (c->x86) { in bsp_init_amd()
430 switch (c->x86_model) { in bsp_init_amd()
447 switch (c->x86_model) { in bsp_init_amd()
462 switch (c->x86_model) { in bsp_init_amd()
477 bsp_determine_snp(c); in bsp_init_amd()
481 WARN_ONCE(1, "Family 0x%x, model: 0x%x??\n", c->x86, c->x86_model); in bsp_init_amd()
484 static void early_detect_mem_encrypt(struct cpuinfo_x86 *c) in early_detect_mem_encrypt() argument
502 if (cpu_has(c, X86_FEATURE_SME) || cpu_has(c, X86_FEATURE_SEV)) { in early_detect_mem_encrypt()
513 c->x86_phys_bits -= (cpuid_ebx(0x8000001f) >> 6) & 0x3f; in early_detect_mem_encrypt()
536 static void early_init_amd(struct cpuinfo_x86 *c) in early_init_amd() argument
540 if (c->x86 >= 0xf) in early_init_amd()
541 set_cpu_cap(c, X86_FEATURE_K8); in early_init_amd()
543 rdmsr_safe(MSR_AMD64_PATCH_LEVEL, &c->microcode, &dummy); in early_init_amd()
549 if (c->x86_power & (1 << 8)) { in early_init_amd()
550 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); in early_init_amd()
551 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC); in early_init_amd()
555 if (c->x86_power & BIT(12)) in early_init_amd()
556 set_cpu_cap(c, X86_FEATURE_ACC_POWER); in early_init_amd()
559 if (c->x86_power & BIT(14)) in early_init_amd()
560 set_cpu_cap(c, X86_FEATURE_RAPL); in early_init_amd()
563 set_cpu_cap(c, X86_FEATURE_SYSCALL32); in early_init_amd()
566 if (c->x86 == 5) in early_init_amd()
567 if (c->x86_model == 13 || c->x86_model == 9 || in early_init_amd()
568 (c->x86_model == 8 && c->x86_stepping >= 8)) in early_init_amd()
569 set_cpu_cap(c, X86_FEATURE_K6_MTRR); in early_init_amd()
579 if (c->x86 > 0x16) in early_init_amd()
580 set_cpu_cap(c, X86_FEATURE_EXTD_APICID); in early_init_amd()
581 else if (c->x86 >= 0xf) { in early_init_amd()
587 set_cpu_cap(c, X86_FEATURE_EXTD_APICID); in early_init_amd()
597 set_cpu_cap(c, X86_FEATURE_VMMCALL); in early_init_amd()
600 if (c->x86 == 0x16 && c->x86_model <= 0xf) in early_init_amd()
603 early_detect_mem_encrypt(c); in early_init_amd()
605 if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && !cpu_has(c, X86_FEATURE_IBPB_BRTYPE)) { in early_init_amd()
606 if (c->x86 == 0x17 && boot_cpu_has(X86_FEATURE_AMD_IBPB)) in early_init_amd()
608 else if (c->x86 >= 0x19 && !wrmsrl_safe(MSR_IA32_PRED_CMD, PRED_CMD_SBPB)) { in early_init_amd()
615 static void init_amd_k8(struct cpuinfo_x86 *c) in init_amd_k8() argument
623 set_cpu_cap(c, X86_FEATURE_REP_GOOD); in init_amd_k8()
630 if (c->x86_model < 0x14 && cpu_has(c, X86_FEATURE_LAHF_LM)) { in init_amd_k8()
631 clear_cpu_cap(c, X86_FEATURE_LAHF_LM); in init_amd_k8()
638 if (!c->x86_model_id[0]) in init_amd_k8()
639 strcpy(c->x86_model_id, "Hammer"); in init_amd_k8()
651 set_cpu_bug(c, X86_BUG_SWAPGS_FENCE); in init_amd_k8()
659 if (c->x86_model > 0x41 || in init_amd_k8()
660 (c->x86_model == 0x41 && c->x86_stepping >= 0x2)) in init_amd_k8()
664 static void init_amd_gh(struct cpuinfo_x86 *c) in init_amd_gh() argument
668 if (c == &boot_cpu_data) in init_amd_gh()
695 set_cpu_bug(c, X86_BUG_AMD_TLB_MMATCH); in init_amd_gh()
703 if (c->x86_model > 0x2 || in init_amd_gh()
704 (c->x86_model == 0x2 && c->x86_stepping >= 0x1)) in init_amd_gh()
708 static void init_amd_ln(struct cpuinfo_x86 *c) in init_amd_ln() argument
733 static void clear_rdrand_cpuid_bit(struct cpuinfo_x86 *c) in clear_rdrand_cpuid_bit() argument
761 clear_cpu_cap(c, X86_FEATURE_RDRAND); in clear_rdrand_cpuid_bit()
765 static void init_amd_jg(struct cpuinfo_x86 *c) in init_amd_jg() argument
772 clear_rdrand_cpuid_bit(c); in init_amd_jg()
775 static void init_amd_bd(struct cpuinfo_x86 *c) in init_amd_bd() argument
783 if ((c->x86_model >= 0x02) && (c->x86_model < 0x20)) { in init_amd_bd()
795 clear_rdrand_cpuid_bit(c); in init_amd_bd()
803 static void fix_erratum_1386(struct cpuinfo_x86 *c) in fix_erratum_1386() argument
819 clear_cpu_cap(c, X86_FEATURE_XSAVES); in fix_erratum_1386()
822 void init_spectral_chicken(struct cpuinfo_x86 *c) in init_spectral_chicken() argument
833 if (!cpu_has(c, X86_FEATURE_HYPERVISOR)) { in init_spectral_chicken()
850 static void init_amd_zen1(struct cpuinfo_x86 *c) in init_amd_zen1() argument
852 fix_erratum_1386(c); in init_amd_zen1()
855 if (!cpu_has(c, X86_FEATURE_HYPERVISOR)) { in init_amd_zen1()
858 if (!cpu_has(c, X86_FEATURE_CPB)) in init_amd_zen1()
859 set_cpu_cap(c, X86_FEATURE_CPB); in init_amd_zen1()
887 static void zen2_zenbleed_check(struct cpuinfo_x86 *c) in zen2_zenbleed_check() argument
889 if (cpu_has(c, X86_FEATURE_HYPERVISOR)) in zen2_zenbleed_check()
892 if (!cpu_has(c, X86_FEATURE_AVX)) in zen2_zenbleed_check()
903 static void init_amd_zen2(struct cpuinfo_x86 *c) in init_amd_zen2() argument
905 init_spectral_chicken(c); in init_amd_zen2()
906 fix_erratum_1386(c); in init_amd_zen2()
907 zen2_zenbleed_check(c); in init_amd_zen2()
910 static void init_amd_zen3(struct cpuinfo_x86 *c) in init_amd_zen3() argument
912 if (!cpu_has(c, X86_FEATURE_HYPERVISOR)) { in init_amd_zen3()
918 if (!cpu_has(c, X86_FEATURE_BTC_NO)) in init_amd_zen3()
919 set_cpu_cap(c, X86_FEATURE_BTC_NO); in init_amd_zen3()
923 static void init_amd_zen4(struct cpuinfo_x86 *c) in init_amd_zen4() argument
925 if (!cpu_has(c, X86_FEATURE_HYPERVISOR)) in init_amd_zen4()
932 switch (c->x86_model) { in init_amd_zen4()
935 clear_cpu_cap(c, X86_FEATURE_V_VMSAVE_VMLOAD); in init_amd_zen4()
940 static void init_amd_zen5(struct cpuinfo_x86 *c) in init_amd_zen5() argument
944 static void init_amd(struct cpuinfo_x86 *c) in init_amd() argument
948 early_init_amd(c); in init_amd()
954 clear_cpu_cap(c, 0*32+31); in init_amd()
956 if (c->x86 >= 0x10) in init_amd()
957 set_cpu_cap(c, X86_FEATURE_REP_GOOD); in init_amd()
960 if (cpu_has(c, X86_FEATURE_FSRM)) in init_amd()
961 set_cpu_cap(c, X86_FEATURE_FSRS); in init_amd()
964 if (c->x86 < 6) in init_amd()
965 clear_cpu_cap(c, X86_FEATURE_MCE); in init_amd()
967 switch (c->x86) { in init_amd()
968 case 4: init_amd_k5(c); break; in init_amd()
969 case 5: init_amd_k6(c); break; in init_amd()
970 case 6: init_amd_k7(c); break; in init_amd()
971 case 0xf: init_amd_k8(c); break; in init_amd()
972 case 0x10: init_amd_gh(c); break; in init_amd()
973 case 0x12: init_amd_ln(c); break; in init_amd()
974 case 0x15: init_amd_bd(c); break; in init_amd()
975 case 0x16: init_amd_jg(c); break; in init_amd()
982 if (c->x86 >= 0x17) in init_amd()
986 init_amd_zen1(c); in init_amd()
988 init_amd_zen2(c); in init_amd()
990 init_amd_zen3(c); in init_amd()
992 init_amd_zen4(c); in init_amd()
994 init_amd_zen5(c); in init_amd()
1000 if ((c->x86 >= 6) && (!cpu_has(c, X86_FEATURE_XSAVEERPTR))) in init_amd()
1001 set_cpu_bug(c, X86_BUG_FXSAVE_LEAK); in init_amd()
1003 cpu_detect_cache_sizes(c); in init_amd()
1005 srat_detect_node(c); in init_amd()
1007 init_amd_cacheinfo(c); in init_amd()
1009 if (cpu_has(c, X86_FEATURE_SVM)) { in init_amd()
1013 clear_cpu_cap(c, X86_FEATURE_SVM); in init_amd()
1017 if (!cpu_has(c, X86_FEATURE_LFENCE_RDTSC) && cpu_has(c, X86_FEATURE_XMM2)) { in init_amd()
1028 set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); in init_amd()
1035 if (c->x86 > 0x11) in init_amd()
1036 set_cpu_cap(c, X86_FEATURE_ARAT); in init_amd()
1039 if (!cpu_has(c, X86_FEATURE_3DNOWPREFETCH)) in init_amd()
1040 if (cpu_has(c, X86_FEATURE_3DNOW) || cpu_has(c, X86_FEATURE_LM)) in init_amd()
1041 set_cpu_cap(c, X86_FEATURE_3DNOWPREFETCH); in init_amd()
1045 set_cpu_bug(c, X86_BUG_SYSRET_SS_ATTRS); in init_amd()
1052 if (cpu_has(c, X86_FEATURE_IRPERF) && in init_amd()
1053 (boot_cpu_has(X86_FEATURE_ZEN1) && c->x86_model > 0x2f)) in init_amd()
1056 check_null_seg_clears_base(c); in init_amd()
1066 cpu_has(c, X86_FEATURE_AUTOIBRS)) in init_amd()
1070 clear_cpu_cap(c, X86_FEATURE_APIC_MSRS_FENCE); in init_amd()
1074 static unsigned int amd_size_cache(struct cpuinfo_x86 *c, unsigned int size) in amd_size_cache() argument
1077 if (c->x86 == 6) { in amd_size_cache()
1079 if (c->x86_model == 3 && c->x86_stepping == 0) in amd_size_cache()
1082 if (c->x86_model == 4 && in amd_size_cache()
1083 (c->x86_stepping == 0 || c->x86_stepping == 1)) in amd_size_cache()
1090 static void cpu_detect_tlb_amd(struct cpuinfo_x86 *c) in cpu_detect_tlb_amd() argument
1095 if (c->x86 < 0xf) in cpu_detect_tlb_amd()
1098 if (c->extended_cpuid_level < 0x80000006) in cpu_detect_tlb_amd()
1110 if (c->x86 == 0xf) { in cpu_detect_tlb_amd()
1127 if (c->x86 == 0x15 && c->x86_model <= 0x1f) { in cpu_detect_tlb_amd()
1206 struct cpuinfo_x86 *c = &cpu_data(smp_processor_id()); in zenbleed_check_cpu() local
1208 zen2_zenbleed_check(c); in zenbleed_check_cpu()