Lines Matching refs:c

160 static void init_amd_k5(struct cpuinfo_x86 *c)  in init_amd_k5()  argument
172 if (c->x86_model == 9 || c->x86_model == 10) { in init_amd_k5()
179 static void init_amd_k6(struct cpuinfo_x86 *c) in init_amd_k6() argument
185 if (c->x86_model < 6) { in init_amd_k6()
187 if (c->x86_model == 0) { in init_amd_k6()
188 clear_cpu_cap(c, X86_FEATURE_APIC); in init_amd_k6()
189 set_cpu_cap(c, X86_FEATURE_PGE); in init_amd_k6()
194 if (c->x86_model == 6 && c->x86_stepping == 1) { in init_amd_k6()
223 if (c->x86_model < 8 || in init_amd_k6()
224 (c->x86_model == 8 && c->x86_stepping < 8)) { in init_amd_k6()
243 if ((c->x86_model == 8 && c->x86_stepping > 7) || in init_amd_k6()
244 c->x86_model == 9 || c->x86_model == 13) { in init_amd_k6()
265 if (c->x86_model == 10) { in init_amd_k6()
273 static void init_amd_k7(struct cpuinfo_x86 *c) in init_amd_k7() argument
283 if (c->x86_model >= 6 && c->x86_model <= 10) { in init_amd_k7()
284 if (!cpu_has(c, X86_FEATURE_XMM)) { in init_amd_k7()
287 set_cpu_cap(c, X86_FEATURE_XMM); in init_amd_k7()
296 if ((c->x86_model == 8 && c->x86_stepping >= 1) || (c->x86_model > 8)) { in init_amd_k7()
306 if (!c->cpu_index) in init_amd_k7()
314 if ((c->x86_model == 6) && ((c->x86_stepping == 0) || in init_amd_k7()
315 (c->x86_stepping == 1))) in init_amd_k7()
319 if ((c->x86_model == 7) && (c->x86_stepping == 0)) in init_amd_k7()
329 if (((c->x86_model == 6) && (c->x86_stepping >= 2)) || in init_amd_k7()
330 ((c->x86_model == 7) && (c->x86_stepping >= 1)) || in init_amd_k7()
331 (c->x86_model > 7)) in init_amd_k7()
332 if (cpu_has(c, X86_FEATURE_MP)) in init_amd_k7()
375 static void legacy_fixup_core_id(struct cpuinfo_x86 *c) in legacy_fixup_core_id() argument
379 if (c->x86 >= 0x17) in legacy_fixup_core_id()
382 cus_per_node = c->x86_max_cores / nodes_per_socket; in legacy_fixup_core_id()
383 c->cpu_core_id %= cus_per_node; in legacy_fixup_core_id()
392 static void amd_get_topology(struct cpuinfo_x86 *c) in amd_get_topology() argument
403 c->cpu_die_id = ecx & 0xff; in amd_get_topology()
405 if (c->x86 == 0x15) in amd_get_topology()
406 c->cu_id = ebx & 0xff; in amd_get_topology()
408 if (c->x86 >= 0x17) { in amd_get_topology()
409 c->cpu_core_id = ebx & 0xff; in amd_get_topology()
412 c->x86_max_cores /= smp_num_siblings; in amd_get_topology()
419 err = detect_extended_topology(c); in amd_get_topology()
421 c->x86_coreid_bits = get_count_order(c->x86_max_cores); in amd_get_topology()
423 cacheinfo_amd_init_llc_id(c, cpu); in amd_get_topology()
425 } else if (cpu_has(c, X86_FEATURE_NODEID_MSR)) { in amd_get_topology()
429 c->cpu_die_id = value & 7; in amd_get_topology()
431 per_cpu(cpu_llc_id, cpu) = c->cpu_die_id; in amd_get_topology()
436 set_cpu_cap(c, X86_FEATURE_AMD_DCM); in amd_get_topology()
437 legacy_fixup_core_id(c); in amd_get_topology()
445 static void amd_detect_cmp(struct cpuinfo_x86 *c) in amd_detect_cmp() argument
450 bits = c->x86_coreid_bits; in amd_detect_cmp()
452 c->cpu_core_id = c->initial_apicid & ((1 << bits)-1); in amd_detect_cmp()
454 c->phys_proc_id = c->initial_apicid >> bits; in amd_detect_cmp()
456 per_cpu(cpu_llc_id, cpu) = c->cpu_die_id = c->phys_proc_id; in amd_detect_cmp()
465 static void srat_detect_node(struct cpuinfo_x86 *c) in srat_detect_node() argument
470 unsigned apicid = c->apicid; in srat_detect_node()
482 x86_cpuinit.fixup_cpu_id(c, node); in srat_detect_node()
504 int ht_nodeid = c->initial_apicid; in srat_detect_node()
516 static void early_init_amd_mc(struct cpuinfo_x86 *c) in early_init_amd_mc() argument
522 if (c->extended_cpuid_level < 0x80000008) in early_init_amd_mc()
527 c->x86_max_cores = (ecx & 0xff) + 1; in early_init_amd_mc()
534 while ((1 << bits) < c->x86_max_cores) in early_init_amd_mc()
538 c->x86_coreid_bits = bits; in early_init_amd_mc()
542 static void bsp_init_amd(struct cpuinfo_x86 *c) in bsp_init_amd() argument
544 if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { in bsp_init_amd()
546 if (c->x86 > 0x10 || in bsp_init_amd()
547 (c->x86 == 0x10 && c->x86_model >= 0x2)) { in bsp_init_amd()
556 if (c->x86 == 0x15) { in bsp_init_amd()
571 if (cpu_has(c, X86_FEATURE_MWAITX)) in bsp_init_amd()
588 c->x86 >= 0x15 && c->x86 <= 0x17) { in bsp_init_amd()
591 switch (c->x86) { in bsp_init_amd()
608 resctrl_cpu_detect(c); in bsp_init_amd()
611 switch (c->x86) { in bsp_init_amd()
613 switch (c->x86_model) { in bsp_init_amd()
630 switch (c->x86_model) { in bsp_init_amd()
651 WARN_ONCE(1, "Family 0x%x, model: 0x%x??\n", c->x86, c->x86_model); in bsp_init_amd()
654 static void early_detect_mem_encrypt(struct cpuinfo_x86 *c) in early_detect_mem_encrypt() argument
672 if (cpu_has(c, X86_FEATURE_SME) || cpu_has(c, X86_FEATURE_SEV)) { in early_detect_mem_encrypt()
683 c->x86_phys_bits -= (cpuid_ebx(0x8000001f) >> 6) & 0x3f; in early_detect_mem_encrypt()
705 static void early_init_amd(struct cpuinfo_x86 *c) in early_init_amd() argument
710 early_init_amd_mc(c); in early_init_amd()
712 if (c->x86 >= 0xf) in early_init_amd()
713 set_cpu_cap(c, X86_FEATURE_K8); in early_init_amd()
715 rdmsr_safe(MSR_AMD64_PATCH_LEVEL, &c->microcode, &dummy); in early_init_amd()
721 if (c->x86_power & (1 << 8)) { in early_init_amd()
722 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); in early_init_amd()
723 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC); in early_init_amd()
727 if (c->x86_power & BIT(12)) in early_init_amd()
728 set_cpu_cap(c, X86_FEATURE_ACC_POWER); in early_init_amd()
731 if (c->x86_power & BIT(14)) in early_init_amd()
732 set_cpu_cap(c, X86_FEATURE_RAPL); in early_init_amd()
735 set_cpu_cap(c, X86_FEATURE_SYSCALL32); in early_init_amd()
738 if (c->x86 == 5) in early_init_amd()
739 if (c->x86_model == 13 || c->x86_model == 9 || in early_init_amd()
740 (c->x86_model == 8 && c->x86_stepping >= 8)) in early_init_amd()
741 set_cpu_cap(c, X86_FEATURE_K6_MTRR); in early_init_amd()
751 if (c->x86 > 0x16) in early_init_amd()
752 set_cpu_cap(c, X86_FEATURE_EXTD_APICID); in early_init_amd()
753 else if (c->x86 >= 0xf) { in early_init_amd()
759 set_cpu_cap(c, X86_FEATURE_EXTD_APICID); in early_init_amd()
769 set_cpu_cap(c, X86_FEATURE_VMMCALL); in early_init_amd()
772 if (c->x86 == 0x16 && c->x86_model <= 0xf) in early_init_amd()
781 if (cpu_has_amd_erratum(c, amd_erratum_400)) in early_init_amd()
782 set_cpu_bug(c, X86_BUG_AMD_E400); in early_init_amd()
784 early_detect_mem_encrypt(c); in early_init_amd()
787 if (c->x86 == 0x15 && in early_init_amd()
788 (c->x86_model >= 0x10 && c->x86_model <= 0x6f) && in early_init_amd()
789 !cpu_has(c, X86_FEATURE_TOPOEXT)) { in early_init_amd()
794 set_cpu_cap(c, X86_FEATURE_TOPOEXT); in early_init_amd()
800 if (cpu_has(c, X86_FEATURE_TOPOEXT)) in early_init_amd()
803 if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && !cpu_has(c, X86_FEATURE_IBPB_BRTYPE)) { in early_init_amd()
804 if (c->x86 == 0x17 && boot_cpu_has(X86_FEATURE_AMD_IBPB)) in early_init_amd()
806 else if (c->x86 >= 0x19 && !wrmsrl_safe(MSR_IA32_PRED_CMD, PRED_CMD_SBPB)) { in early_init_amd()
813 static void init_amd_k8(struct cpuinfo_x86 *c) in init_amd_k8() argument
821 set_cpu_cap(c, X86_FEATURE_REP_GOOD); in init_amd_k8()
828 if (c->x86_model < 0x14 && cpu_has(c, X86_FEATURE_LAHF_LM)) { in init_amd_k8()
829 clear_cpu_cap(c, X86_FEATURE_LAHF_LM); in init_amd_k8()
836 if (!c->x86_model_id[0]) in init_amd_k8()
837 strcpy(c->x86_model_id, "Hammer"); in init_amd_k8()
849 set_cpu_bug(c, X86_BUG_SWAPGS_FENCE); in init_amd_k8()
852 static void init_amd_gh(struct cpuinfo_x86 *c) in init_amd_gh() argument
856 if (c == &boot_cpu_data) in init_amd_gh()
883 if (cpu_has_amd_erratum(c, amd_erratum_383)) in init_amd_gh()
884 set_cpu_bug(c, X86_BUG_AMD_TLB_MMATCH); in init_amd_gh()
887 static void init_amd_ln(struct cpuinfo_x86 *c) in init_amd_ln() argument
912 static void clear_rdrand_cpuid_bit(struct cpuinfo_x86 *c) in clear_rdrand_cpuid_bit() argument
940 clear_cpu_cap(c, X86_FEATURE_RDRAND); in clear_rdrand_cpuid_bit()
944 static void init_amd_jg(struct cpuinfo_x86 *c) in init_amd_jg() argument
951 clear_rdrand_cpuid_bit(c); in init_amd_jg()
954 static void init_amd_bd(struct cpuinfo_x86 *c) in init_amd_bd() argument
962 if ((c->x86_model >= 0x02) && (c->x86_model < 0x20)) { in init_amd_bd()
974 clear_rdrand_cpuid_bit(c); in init_amd_bd()
977 static void fix_erratum_1386(struct cpuinfo_x86 *c) in fix_erratum_1386() argument
987 clear_cpu_cap(c, X86_FEATURE_XSAVES); in fix_erratum_1386()
990 void init_spectral_chicken(struct cpuinfo_x86 *c) in init_spectral_chicken() argument
1003 if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && cpu_has(c, X86_FEATURE_AMD_STIBP)) { in init_spectral_chicken()
1012 static void init_amd_zn(struct cpuinfo_x86 *c) in init_amd_zn() argument
1020 static void init_amd_zen1(struct cpuinfo_x86 *c) in init_amd_zen1() argument
1022 fix_erratum_1386(c); in init_amd_zen1()
1025 if (!cpu_has(c, X86_FEATURE_HYPERVISOR)) { in init_amd_zen1()
1028 if (!cpu_has(c, X86_FEATURE_CPB)) in init_amd_zen1()
1029 set_cpu_cap(c, X86_FEATURE_CPB); in init_amd_zen1()
1036 if (c->x86 == 0x19 && !cpu_has(c, X86_FEATURE_BTC_NO)) in init_amd_zen1()
1037 set_cpu_cap(c, X86_FEATURE_BTC_NO); in init_amd_zen1()
1066 static void zen2_zenbleed_check(struct cpuinfo_x86 *c) in zen2_zenbleed_check() argument
1068 if (cpu_has(c, X86_FEATURE_HYPERVISOR)) in zen2_zenbleed_check()
1071 if (!cpu_has(c, X86_FEATURE_AVX)) in zen2_zenbleed_check()
1082 static void init_amd_zen2(struct cpuinfo_x86 *c) in init_amd_zen2() argument
1084 fix_erratum_1386(c); in init_amd_zen2()
1085 zen2_zenbleed_check(c); in init_amd_zen2()
1088 static void init_amd_zen3(struct cpuinfo_x86 *c) in init_amd_zen3() argument
1092 static void init_amd_zen4(struct cpuinfo_x86 *c) in init_amd_zen4() argument
1096 static void init_amd(struct cpuinfo_x86 *c) in init_amd() argument
1098 early_init_amd(c); in init_amd()
1104 clear_cpu_cap(c, 0*32+31); in init_amd()
1106 if (c->x86 >= 0x10) in init_amd()
1107 set_cpu_cap(c, X86_FEATURE_REP_GOOD); in init_amd()
1110 if (cpu_has(c, X86_FEATURE_FSRM)) in init_amd()
1111 set_cpu_cap(c, X86_FEATURE_FSRS); in init_amd()
1114 c->apicid = read_apic_id(); in init_amd()
1117 if (c->x86 < 6) in init_amd()
1118 clear_cpu_cap(c, X86_FEATURE_MCE); in init_amd()
1120 switch (c->x86) { in init_amd()
1121 case 4: init_amd_k5(c); break; in init_amd()
1122 case 5: init_amd_k6(c); break; in init_amd()
1123 case 6: init_amd_k7(c); break; in init_amd()
1124 case 0xf: init_amd_k8(c); break; in init_amd()
1125 case 0x10: init_amd_gh(c); break; in init_amd()
1126 case 0x12: init_amd_ln(c); break; in init_amd()
1127 case 0x15: init_amd_bd(c); break; in init_amd()
1128 case 0x16: init_amd_jg(c); break; in init_amd()
1129 case 0x17: init_spectral_chicken(c); in init_amd()
1131 case 0x19: init_amd_zn(c); break; in init_amd()
1135 init_amd_zen1(c); in init_amd()
1137 init_amd_zen2(c); in init_amd()
1139 init_amd_zen3(c); in init_amd()
1141 init_amd_zen4(c); in init_amd()
1147 if ((c->x86 >= 6) && (!cpu_has(c, X86_FEATURE_XSAVEERPTR))) in init_amd()
1148 set_cpu_bug(c, X86_BUG_FXSAVE_LEAK); in init_amd()
1150 cpu_detect_cache_sizes(c); in init_amd()
1152 amd_detect_cmp(c); in init_amd()
1153 amd_get_topology(c); in init_amd()
1154 srat_detect_node(c); in init_amd()
1156 init_amd_cacheinfo(c); in init_amd()
1158 if (!cpu_has(c, X86_FEATURE_LFENCE_RDTSC) && cpu_has(c, X86_FEATURE_XMM2)) { in init_amd()
1169 set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); in init_amd()
1176 if (c->x86 > 0x11) in init_amd()
1177 set_cpu_cap(c, X86_FEATURE_ARAT); in init_amd()
1180 if (!cpu_has(c, X86_FEATURE_3DNOWPREFETCH)) in init_amd()
1181 if (cpu_has(c, X86_FEATURE_3DNOW) || cpu_has(c, X86_FEATURE_LM)) in init_amd()
1182 set_cpu_cap(c, X86_FEATURE_3DNOWPREFETCH); in init_amd()
1186 set_cpu_bug(c, X86_BUG_SYSRET_SS_ATTRS); in init_amd()
1193 if (cpu_has(c, X86_FEATURE_IRPERF) && in init_amd()
1194 (boot_cpu_has(X86_FEATURE_ZEN1) && c->x86_model > 0x2f)) in init_amd()
1197 check_null_seg_clears_base(c); in init_amd()
1207 cpu_has(c, X86_FEATURE_AUTOIBRS)) in init_amd()
1210 if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && in init_amd()
1211 cpu_has_amd_erratum(c, amd_erratum_1485)) in init_amd()
1215 clear_cpu_cap(c, X86_FEATURE_APIC_MSRS_FENCE); in init_amd()
1219 static unsigned int amd_size_cache(struct cpuinfo_x86 *c, unsigned int size) in amd_size_cache() argument
1222 if (c->x86 == 6) { in amd_size_cache()
1224 if (c->x86_model == 3 && c->x86_stepping == 0) in amd_size_cache()
1227 if (c->x86_model == 4 && in amd_size_cache()
1228 (c->x86_stepping == 0 || c->x86_stepping == 1)) in amd_size_cache()
1235 static void cpu_detect_tlb_amd(struct cpuinfo_x86 *c) in cpu_detect_tlb_amd() argument
1240 if (c->x86 < 0xf) in cpu_detect_tlb_amd()
1243 if (c->extended_cpuid_level < 0x80000006) in cpu_detect_tlb_amd()
1255 if (c->x86 == 0xf) { in cpu_detect_tlb_amd()
1272 if (c->x86 == 0x15 && c->x86_model <= 0x1f) { in cpu_detect_tlb_amd()
1351 struct cpuinfo_x86 *c = &boot_cpu_data; in amd_get_highest_perf() local
1353 if (c->x86 == 0x17 && ((c->x86_model >= 0x30 && c->x86_model < 0x40) || in amd_get_highest_perf()
1354 (c->x86_model >= 0x70 && c->x86_model < 0x80))) in amd_get_highest_perf()
1357 if (c->x86 == 0x19 && ((c->x86_model >= 0x20 && c->x86_model < 0x30) || in amd_get_highest_perf()
1358 (c->x86_model >= 0x40 && c->x86_model < 0x70))) in amd_get_highest_perf()
1367 struct cpuinfo_x86 *c = &cpu_data(smp_processor_id()); in zenbleed_check_cpu() local
1369 zen2_zenbleed_check(c); in zenbleed_check_cpu()