Lines Matching refs:c
98 static void init_amd_k5(struct cpuinfo_x86 *c) in init_amd_k5() argument
110 if (c->x86_model == 9 || c->x86_model == 10) { in init_amd_k5()
117 static void init_amd_k6(struct cpuinfo_x86 *c) in init_amd_k6() argument
123 if (c->x86_model < 6) { in init_amd_k6()
125 if (c->x86_model == 0) { in init_amd_k6()
126 clear_cpu_cap(c, X86_FEATURE_APIC); in init_amd_k6()
127 set_cpu_cap(c, X86_FEATURE_PGE); in init_amd_k6()
132 if (c->x86_model == 6 && c->x86_stepping == 1) { in init_amd_k6()
161 if (c->x86_model < 8 || in init_amd_k6()
162 (c->x86_model == 8 && c->x86_stepping < 8)) { in init_amd_k6()
181 if ((c->x86_model == 8 && c->x86_stepping > 7) || in init_amd_k6()
182 c->x86_model == 9 || c->x86_model == 13) { in init_amd_k6()
203 if (c->x86_model == 10) { in init_amd_k6()
211 static void init_amd_k7(struct cpuinfo_x86 *c) in init_amd_k7() argument
221 if (c->x86_model >= 6 && c->x86_model <= 10) { in init_amd_k7()
222 if (!cpu_has(c, X86_FEATURE_XMM)) { in init_amd_k7()
225 set_cpu_cap(c, X86_FEATURE_XMM); in init_amd_k7()
234 if ((c->x86_model == 8 && c->x86_stepping >= 1) || (c->x86_model > 8)) { in init_amd_k7()
244 if (!c->cpu_index) in init_amd_k7()
252 if ((c->x86_model == 6) && ((c->x86_stepping == 0) || in init_amd_k7()
253 (c->x86_stepping == 1))) in init_amd_k7()
257 if ((c->x86_model == 7) && (c->x86_stepping == 0)) in init_amd_k7()
267 if (((c->x86_model == 6) && (c->x86_stepping >= 2)) || in init_amd_k7()
268 ((c->x86_model == 7) && (c->x86_stepping >= 1)) || in init_amd_k7()
269 (c->x86_model > 7)) in init_amd_k7()
270 if (cpu_has(c, X86_FEATURE_MP)) in init_amd_k7()
313 static void legacy_fixup_core_id(struct cpuinfo_x86 *c) in legacy_fixup_core_id() argument
317 if (c->x86 >= 0x17) in legacy_fixup_core_id()
320 cus_per_node = c->x86_max_cores / nodes_per_socket; in legacy_fixup_core_id()
321 c->cpu_core_id %= cus_per_node; in legacy_fixup_core_id()
330 static void amd_get_topology(struct cpuinfo_x86 *c) in amd_get_topology() argument
341 c->cpu_die_id = ecx & 0xff; in amd_get_topology()
343 if (c->x86 == 0x15) in amd_get_topology()
344 c->cu_id = ebx & 0xff; in amd_get_topology()
346 if (c->x86 >= 0x17) { in amd_get_topology()
347 c->cpu_core_id = ebx & 0xff; in amd_get_topology()
350 c->x86_max_cores /= smp_num_siblings; in amd_get_topology()
357 err = detect_extended_topology(c); in amd_get_topology()
359 c->x86_coreid_bits = get_count_order(c->x86_max_cores); in amd_get_topology()
361 cacheinfo_amd_init_llc_id(c, cpu); in amd_get_topology()
363 } else if (cpu_has(c, X86_FEATURE_NODEID_MSR)) { in amd_get_topology()
367 c->cpu_die_id = value & 7; in amd_get_topology()
369 per_cpu(cpu_llc_id, cpu) = c->cpu_die_id; in amd_get_topology()
374 set_cpu_cap(c, X86_FEATURE_AMD_DCM); in amd_get_topology()
375 legacy_fixup_core_id(c); in amd_get_topology()
383 static void amd_detect_cmp(struct cpuinfo_x86 *c) in amd_detect_cmp() argument
388 bits = c->x86_coreid_bits; in amd_detect_cmp()
390 c->cpu_core_id = c->initial_apicid & ((1 << bits)-1); in amd_detect_cmp()
392 c->phys_proc_id = c->initial_apicid >> bits; in amd_detect_cmp()
394 per_cpu(cpu_llc_id, cpu) = c->cpu_die_id = c->phys_proc_id; in amd_detect_cmp()
403 static void srat_detect_node(struct cpuinfo_x86 *c) in srat_detect_node() argument
408 unsigned apicid = c->apicid; in srat_detect_node()
420 x86_cpuinit.fixup_cpu_id(c, node); in srat_detect_node()
442 int ht_nodeid = c->initial_apicid; in srat_detect_node()
454 static void early_init_amd_mc(struct cpuinfo_x86 *c) in early_init_amd_mc() argument
460 if (c->extended_cpuid_level < 0x80000008) in early_init_amd_mc()
465 c->x86_max_cores = (ecx & 0xff) + 1; in early_init_amd_mc()
472 while ((1 << bits) < c->x86_max_cores) in early_init_amd_mc()
476 c->x86_coreid_bits = bits; in early_init_amd_mc()
480 static void bsp_init_amd(struct cpuinfo_x86 *c) in bsp_init_amd() argument
482 if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { in bsp_init_amd()
484 if (c->x86 > 0x10 || in bsp_init_amd()
485 (c->x86 == 0x10 && c->x86_model >= 0x2)) { in bsp_init_amd()
494 if (c->x86 == 0x15) { in bsp_init_amd()
509 if (cpu_has(c, X86_FEATURE_MWAITX)) in bsp_init_amd()
526 c->x86 >= 0x15 && c->x86 <= 0x17) { in bsp_init_amd()
529 switch (c->x86) { in bsp_init_amd()
546 resctrl_cpu_detect(c); in bsp_init_amd()
549 static void early_detect_mem_encrypt(struct cpuinfo_x86 *c) in early_detect_mem_encrypt() argument
567 if (cpu_has(c, X86_FEATURE_SME) || cpu_has(c, X86_FEATURE_SEV)) { in early_detect_mem_encrypt()
578 c->x86_phys_bits -= (cpuid_ebx(0x8000001f) >> 6) & 0x3f; in early_detect_mem_encrypt()
600 static void early_init_amd(struct cpuinfo_x86 *c) in early_init_amd() argument
605 early_init_amd_mc(c); in early_init_amd()
607 if (c->x86 >= 0xf) in early_init_amd()
608 set_cpu_cap(c, X86_FEATURE_K8); in early_init_amd()
610 rdmsr_safe(MSR_AMD64_PATCH_LEVEL, &c->microcode, &dummy); in early_init_amd()
616 if (c->x86_power & (1 << 8)) { in early_init_amd()
617 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); in early_init_amd()
618 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC); in early_init_amd()
622 if (c->x86_power & BIT(12)) in early_init_amd()
623 set_cpu_cap(c, X86_FEATURE_ACC_POWER); in early_init_amd()
626 if (c->x86_power & BIT(14)) in early_init_amd()
627 set_cpu_cap(c, X86_FEATURE_RAPL); in early_init_amd()
630 set_cpu_cap(c, X86_FEATURE_SYSCALL32); in early_init_amd()
633 if (c->x86 == 5) in early_init_amd()
634 if (c->x86_model == 13 || c->x86_model == 9 || in early_init_amd()
635 (c->x86_model == 8 && c->x86_stepping >= 8)) in early_init_amd()
636 set_cpu_cap(c, X86_FEATURE_K6_MTRR); in early_init_amd()
646 if (c->x86 > 0x16) in early_init_amd()
647 set_cpu_cap(c, X86_FEATURE_EXTD_APICID); in early_init_amd()
648 else if (c->x86 >= 0xf) { in early_init_amd()
654 set_cpu_cap(c, X86_FEATURE_EXTD_APICID); in early_init_amd()
664 set_cpu_cap(c, X86_FEATURE_VMMCALL); in early_init_amd()
667 if (c->x86 == 0x16 && c->x86_model <= 0xf) in early_init_amd()
676 if (cpu_has_amd_erratum(c, amd_erratum_400)) in early_init_amd()
677 set_cpu_bug(c, X86_BUG_AMD_E400); in early_init_amd()
679 early_detect_mem_encrypt(c); in early_init_amd()
682 if (c->x86 == 0x15 && in early_init_amd()
683 (c->x86_model >= 0x10 && c->x86_model <= 0x6f) && in early_init_amd()
684 !cpu_has(c, X86_FEATURE_TOPOEXT)) { in early_init_amd()
689 set_cpu_cap(c, X86_FEATURE_TOPOEXT); in early_init_amd()
695 if (cpu_has(c, X86_FEATURE_TOPOEXT)) in early_init_amd()
699 static void init_amd_k8(struct cpuinfo_x86 *c) in init_amd_k8() argument
707 set_cpu_cap(c, X86_FEATURE_REP_GOOD); in init_amd_k8()
714 if (c->x86_model < 0x14 && cpu_has(c, X86_FEATURE_LAHF_LM)) { in init_amd_k8()
715 clear_cpu_cap(c, X86_FEATURE_LAHF_LM); in init_amd_k8()
722 if (!c->x86_model_id[0]) in init_amd_k8()
723 strcpy(c->x86_model_id, "Hammer"); in init_amd_k8()
735 set_cpu_bug(c, X86_BUG_SWAPGS_FENCE); in init_amd_k8()
738 static void init_amd_gh(struct cpuinfo_x86 *c) in init_amd_gh() argument
742 if (c == &boot_cpu_data) in init_amd_gh()
769 if (cpu_has_amd_erratum(c, amd_erratum_383)) in init_amd_gh()
770 set_cpu_bug(c, X86_BUG_AMD_TLB_MMATCH); in init_amd_gh()
773 static void init_amd_ln(struct cpuinfo_x86 *c) in init_amd_ln() argument
798 static void clear_rdrand_cpuid_bit(struct cpuinfo_x86 *c) in clear_rdrand_cpuid_bit() argument
826 clear_cpu_cap(c, X86_FEATURE_RDRAND); in clear_rdrand_cpuid_bit()
830 static void init_amd_jg(struct cpuinfo_x86 *c) in init_amd_jg() argument
837 clear_rdrand_cpuid_bit(c); in init_amd_jg()
840 static void init_amd_bd(struct cpuinfo_x86 *c) in init_amd_bd() argument
848 if ((c->x86_model >= 0x02) && (c->x86_model < 0x20)) { in init_amd_bd()
860 clear_rdrand_cpuid_bit(c); in init_amd_bd()
863 void init_spectral_chicken(struct cpuinfo_x86 *c) in init_spectral_chicken() argument
876 if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && cpu_has(c, X86_FEATURE_AMD_STIBP)) { in init_spectral_chicken()
891 clear_cpu_cap(c, X86_FEATURE_XSAVES); in init_spectral_chicken()
894 static void init_amd_zn(struct cpuinfo_x86 *c) in init_amd_zn() argument
896 set_cpu_cap(c, X86_FEATURE_ZEN); in init_amd_zn()
903 if (!cpu_has(c, X86_FEATURE_HYPERVISOR)) { in init_amd_zn()
906 if (!cpu_has(c, X86_FEATURE_CPB)) in init_amd_zn()
907 set_cpu_cap(c, X86_FEATURE_CPB); in init_amd_zn()
914 if (c->x86 == 0x19 && !cpu_has(c, X86_FEATURE_BTC_NO)) in init_amd_zn()
915 set_cpu_cap(c, X86_FEATURE_BTC_NO); in init_amd_zn()
919 static void init_amd(struct cpuinfo_x86 *c) in init_amd() argument
921 early_init_amd(c); in init_amd()
927 clear_cpu_cap(c, 0*32+31); in init_amd()
929 if (c->x86 >= 0x10) in init_amd()
930 set_cpu_cap(c, X86_FEATURE_REP_GOOD); in init_amd()
933 c->apicid = hard_smp_processor_id(); in init_amd()
936 if (c->x86 < 6) in init_amd()
937 clear_cpu_cap(c, X86_FEATURE_MCE); in init_amd()
939 switch (c->x86) { in init_amd()
940 case 4: init_amd_k5(c); break; in init_amd()
941 case 5: init_amd_k6(c); break; in init_amd()
942 case 6: init_amd_k7(c); break; in init_amd()
943 case 0xf: init_amd_k8(c); break; in init_amd()
944 case 0x10: init_amd_gh(c); break; in init_amd()
945 case 0x12: init_amd_ln(c); break; in init_amd()
946 case 0x15: init_amd_bd(c); break; in init_amd()
947 case 0x16: init_amd_jg(c); break; in init_amd()
948 case 0x17: init_spectral_chicken(c); in init_amd()
950 case 0x19: init_amd_zn(c); break; in init_amd()
957 if ((c->x86 >= 6) && (!cpu_has(c, X86_FEATURE_XSAVEERPTR))) in init_amd()
958 set_cpu_bug(c, X86_BUG_FXSAVE_LEAK); in init_amd()
960 cpu_detect_cache_sizes(c); in init_amd()
962 amd_detect_cmp(c); in init_amd()
963 amd_get_topology(c); in init_amd()
964 srat_detect_node(c); in init_amd()
966 init_amd_cacheinfo(c); in init_amd()
968 if (!cpu_has(c, X86_FEATURE_LFENCE_RDTSC) && cpu_has(c, X86_FEATURE_XMM2)) { in init_amd()
979 set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC); in init_amd()
986 if (c->x86 > 0x11) in init_amd()
987 set_cpu_cap(c, X86_FEATURE_ARAT); in init_amd()
990 if (!cpu_has(c, X86_FEATURE_3DNOWPREFETCH)) in init_amd()
991 if (cpu_has(c, X86_FEATURE_3DNOW) || cpu_has(c, X86_FEATURE_LM)) in init_amd()
992 set_cpu_cap(c, X86_FEATURE_3DNOWPREFETCH); in init_amd()
996 set_cpu_bug(c, X86_BUG_SYSRET_SS_ATTRS); in init_amd()
1003 if (cpu_has(c, X86_FEATURE_IRPERF) && in init_amd()
1004 !cpu_has_amd_erratum(c, amd_erratum_1054)) in init_amd()
1007 check_null_seg_clears_base(c); in init_amd()
1011 static unsigned int amd_size_cache(struct cpuinfo_x86 *c, unsigned int size) in amd_size_cache() argument
1014 if (c->x86 == 6) { in amd_size_cache()
1016 if (c->x86_model == 3 && c->x86_stepping == 0) in amd_size_cache()
1019 if (c->x86_model == 4 && in amd_size_cache()
1020 (c->x86_stepping == 0 || c->x86_stepping == 1)) in amd_size_cache()
1027 static void cpu_detect_tlb_amd(struct cpuinfo_x86 *c) in cpu_detect_tlb_amd() argument
1032 if (c->x86 < 0xf) in cpu_detect_tlb_amd()
1035 if (c->extended_cpuid_level < 0x80000006) in cpu_detect_tlb_amd()
1047 if (c->x86 == 0xf) { in cpu_detect_tlb_amd()
1064 if (c->x86 == 0x15 && c->x86_model <= 0x1f) { in cpu_detect_tlb_amd()
1210 struct cpuinfo_x86 *c = &boot_cpu_data; in amd_get_highest_perf() local
1212 if (c->x86 == 0x17 && ((c->x86_model >= 0x30 && c->x86_model < 0x40) || in amd_get_highest_perf()
1213 (c->x86_model >= 0x70 && c->x86_model < 0x80))) in amd_get_highest_perf()
1216 if (c->x86 == 0x19 && ((c->x86_model >= 0x20 && c->x86_model < 0x30) || in amd_get_highest_perf()
1217 (c->x86_model >= 0x40 && c->x86_model < 0x70))) in amd_get_highest_perf()