Lines Matching refs:c

80 static void init_amd_k5(struct cpuinfo_x86 *c)  in init_amd_k5()  argument
92 if (c->x86_model == 9 || c->x86_model == 10) { in init_amd_k5()
99 static void init_amd_k6(struct cpuinfo_x86 *c) in init_amd_k6() argument
105 if (c->x86_model < 6) { in init_amd_k6()
107 if (c->x86_model == 0) { in init_amd_k6()
108 clear_cpu_cap(c, X86_FEATURE_APIC); in init_amd_k6()
109 set_cpu_cap(c, X86_FEATURE_PGE); in init_amd_k6()
114 if (c->x86_model == 6 && c->x86_mask == 1) { in init_amd_k6()
143 if (c->x86_model < 8 || in init_amd_k6()
144 (c->x86_model == 8 && c->x86_mask < 8)) { in init_amd_k6()
163 if ((c->x86_model == 8 && c->x86_mask > 7) || in init_amd_k6()
164 c->x86_model == 9 || c->x86_model == 13) { in init_amd_k6()
185 if (c->x86_model == 10) { in init_amd_k6()
193 static void init_amd_k7(struct cpuinfo_x86 *c) in init_amd_k7() argument
203 if (c->x86_model >= 6 && c->x86_model <= 10) { in init_amd_k7()
204 if (!cpu_has(c, X86_FEATURE_XMM)) { in init_amd_k7()
207 set_cpu_cap(c, X86_FEATURE_XMM); in init_amd_k7()
216 if ((c->x86_model == 8 && c->x86_mask >= 1) || (c->x86_model > 8)) { in init_amd_k7()
226 set_cpu_cap(c, X86_FEATURE_K7); in init_amd_k7()
229 if (!c->cpu_index) in init_amd_k7()
237 if ((c->x86_model == 6) && ((c->x86_mask == 0) || in init_amd_k7()
238 (c->x86_mask == 1))) in init_amd_k7()
242 if ((c->x86_model == 7) && (c->x86_mask == 0)) in init_amd_k7()
252 if (((c->x86_model == 6) && (c->x86_mask >= 2)) || in init_amd_k7()
253 ((c->x86_model == 7) && (c->x86_mask >= 1)) || in init_amd_k7()
254 (c->x86_model > 7)) in init_amd_k7()
255 if (cpu_has(c, X86_FEATURE_MP)) in init_amd_k7()
300 static void amd_get_topology(struct cpuinfo_x86 *c) in amd_get_topology() argument
316 c->compute_unit_id = ebx & 0xff; in amd_get_topology()
318 } else if (cpu_has(c, X86_FEATURE_NODEID_MSR)) { in amd_get_topology()
332 set_cpu_cap(c, X86_FEATURE_AMD_DCM); in amd_get_topology()
333 cores_per_node = c->x86_max_cores / nodes_per_socket; in amd_get_topology()
340 c->cpu_core_id %= cores_per_node; in amd_get_topology()
341 c->compute_unit_id %= cus_per_node; in amd_get_topology()
350 static void amd_detect_cmp(struct cpuinfo_x86 *c) in amd_detect_cmp() argument
357 bits = c->x86_coreid_bits; in amd_detect_cmp()
359 c->cpu_core_id = c->initial_apicid & ((1 << bits)-1); in amd_detect_cmp()
361 c->phys_proc_id = c->initial_apicid >> bits; in amd_detect_cmp()
363 per_cpu(cpu_llc_id, cpu) = c->phys_proc_id; in amd_detect_cmp()
364 amd_get_topology(c); in amd_detect_cmp()
370 if (c->x86 != 0x17 || !cpuid_edx(0x80000006)) in amd_detect_cmp()
373 socket_id = (c->apicid >> bits) - 1; in amd_detect_cmp()
374 core_complex_id = (c->apicid & ((1 << bits) - 1)) >> 3; in amd_detect_cmp()
396 static void srat_detect_node(struct cpuinfo_x86 *c) in srat_detect_node() argument
401 unsigned apicid = c->apicid; in srat_detect_node()
413 x86_cpuinit.fixup_cpu_id(c, node); in srat_detect_node()
435 int ht_nodeid = c->initial_apicid; in srat_detect_node()
448 static void early_init_amd_mc(struct cpuinfo_x86 *c) in early_init_amd_mc() argument
454 if (c->extended_cpuid_level < 0x80000008) in early_init_amd_mc()
459 c->x86_max_cores = (ecx & 0xff) + 1; in early_init_amd_mc()
466 while ((1 << bits) < c->x86_max_cores) in early_init_amd_mc()
470 c->x86_coreid_bits = bits; in early_init_amd_mc()
474 static void bsp_init_amd(struct cpuinfo_x86 *c) in bsp_init_amd() argument
478 if (c->x86 >= 0xf) { in bsp_init_amd()
496 if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) { in bsp_init_amd()
498 if (c->x86 > 0x10 || in bsp_init_amd()
499 (c->x86 == 0x10 && c->x86_model >= 0x2)) { in bsp_init_amd()
509 if (c->x86 == 0x15) { in bsp_init_amd()
524 if (cpu_has(c, X86_FEATURE_MWAITX)) in bsp_init_amd()
528 static void early_init_amd(struct cpuinfo_x86 *c) in early_init_amd() argument
530 early_init_amd_mc(c); in early_init_amd()
536 if (c->x86_power & (1 << 8)) { in early_init_amd()
537 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC); in early_init_amd()
538 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC); in early_init_amd()
544 set_cpu_cap(c, X86_FEATURE_SYSCALL32); in early_init_amd()
547 if (c->x86 == 5) in early_init_amd()
548 if (c->x86_model == 13 || c->x86_model == 9 || in early_init_amd()
549 (c->x86_model == 8 && c->x86_mask >= 8)) in early_init_amd()
550 set_cpu_cap(c, X86_FEATURE_K6_MTRR); in early_init_amd()
559 if (cpu_has_apic && c->x86 > 0x16) { in early_init_amd()
560 set_cpu_cap(c, X86_FEATURE_EXTD_APICID); in early_init_amd()
561 } else if (cpu_has_apic && c->x86 >= 0xf) { in early_init_amd()
566 set_cpu_cap(c, X86_FEATURE_EXTD_APICID); in early_init_amd()
575 set_cpu_cap(c, X86_FEATURE_VMMCALL); in early_init_amd()
578 if (c->x86 == 0x16 && c->x86_model <= 0xf) in early_init_amd()
586 static void init_amd_k8(struct cpuinfo_x86 *c) in init_amd_k8() argument
594 set_cpu_cap(c, X86_FEATURE_REP_GOOD); in init_amd_k8()
601 if (c->x86_model < 0x14 && cpu_has(c, X86_FEATURE_LAHF_LM)) { in init_amd_k8()
602 clear_cpu_cap(c, X86_FEATURE_LAHF_LM); in init_amd_k8()
609 if (!c->x86_model_id[0]) in init_amd_k8()
610 strcpy(c->x86_model_id, "Hammer"); in init_amd_k8()
624 static void init_amd_gh(struct cpuinfo_x86 *c) in init_amd_gh() argument
628 if (c == &boot_cpu_data) in init_amd_gh()
655 if (cpu_has_amd_erratum(c, amd_erratum_383)) in init_amd_gh()
656 set_cpu_bug(c, X86_BUG_AMD_TLB_MMATCH); in init_amd_gh()
659 static void init_amd_bd(struct cpuinfo_x86 *c) in init_amd_bd() argument
664 if ((c->x86_model >= 0x10) && (c->x86_model <= 0x1f) && in init_amd_bd()
665 !cpu_has(c, X86_FEATURE_TOPOEXT)) { in init_amd_bd()
670 set_cpu_cap(c, X86_FEATURE_TOPOEXT); in init_amd_bd()
680 if ((c->x86_model >= 0x02) && (c->x86_model < 0x20)) { in init_amd_bd()
688 static void init_amd(struct cpuinfo_x86 *c) in init_amd() argument
692 early_init_amd(c); in init_amd()
698 clear_cpu_cap(c, 0*32+31); in init_amd()
700 if (c->x86 >= 0x10) in init_amd()
701 set_cpu_cap(c, X86_FEATURE_REP_GOOD); in init_amd()
704 c->apicid = hard_smp_processor_id(); in init_amd()
707 if (c->x86 < 6) in init_amd()
708 clear_cpu_cap(c, X86_FEATURE_MCE); in init_amd()
710 switch (c->x86) { in init_amd()
711 case 4: init_amd_k5(c); break; in init_amd()
712 case 5: init_amd_k6(c); break; in init_amd()
713 case 6: init_amd_k7(c); break; in init_amd()
714 case 0xf: init_amd_k8(c); break; in init_amd()
715 case 0x10: init_amd_gh(c); break; in init_amd()
716 case 0x15: init_amd_bd(c); break; in init_amd()
720 if (c->x86 >= 6) in init_amd()
721 set_cpu_bug(c, X86_BUG_FXSAVE_LEAK); in init_amd()
723 cpu_detect_cache_sizes(c); in init_amd()
726 if (c->extended_cpuid_level >= 0x80000008) { in init_amd()
727 amd_detect_cmp(c); in init_amd()
728 srat_detect_node(c); in init_amd()
732 detect_ht(c); in init_amd()
735 init_amd_cacheinfo(c); in init_amd()
737 if (c->x86 >= 0xf) in init_amd()
738 set_cpu_cap(c, X86_FEATURE_K8); in init_amd()
742 set_cpu_cap(c, X86_FEATURE_MFENCE_RDTSC); in init_amd()
749 if (c->x86 > 0x11) in init_amd()
750 set_cpu_cap(c, X86_FEATURE_ARAT); in init_amd()
752 if (cpu_has_amd_erratum(c, amd_erratum_400)) in init_amd()
753 set_cpu_bug(c, X86_BUG_AMD_APIC_C1E); in init_amd()
755 rdmsr_safe(MSR_AMD64_PATCH_LEVEL, &c->microcode, &dummy); in init_amd()
758 if (!cpu_has(c, X86_FEATURE_3DNOWPREFETCH)) in init_amd()
759 if (cpu_has(c, X86_FEATURE_3DNOW) || cpu_has(c, X86_FEATURE_LM)) in init_amd()
760 set_cpu_cap(c, X86_FEATURE_3DNOWPREFETCH); in init_amd()
763 set_cpu_bug(c, X86_BUG_SYSRET_SS_ATTRS); in init_amd()
767 static unsigned int amd_size_cache(struct cpuinfo_x86 *c, unsigned int size) in amd_size_cache() argument
770 if ((c->x86 == 6)) { in amd_size_cache()
772 if (c->x86_model == 3 && c->x86_mask == 0) in amd_size_cache()
775 if (c->x86_model == 4 && in amd_size_cache()
776 (c->x86_mask == 0 || c->x86_mask == 1)) in amd_size_cache()
783 static void cpu_detect_tlb_amd(struct cpuinfo_x86 *c) in cpu_detect_tlb_amd() argument
788 if (c->x86 < 0xf) in cpu_detect_tlb_amd()
791 if (c->extended_cpuid_level < 0x80000006) in cpu_detect_tlb_amd()
803 if (c->x86 == 0xf) { in cpu_detect_tlb_amd()
820 if (c->x86 == 0x15 && c->x86_model <= 0x1f) { in cpu_detect_tlb_amd()