/* SPDX-License-Identifier: GPL-2.0 */ #ifndef ARCH_X86_CPU_H #define ARCH_X86_CPU_H /* attempt to consolidate cpu attributes */ struct cpu_dev { const char *c_vendor; /* some have two possibilities for cpuid string */ const char *c_ident[2]; void (*c_early_init)(struct cpuinfo_x86 *); void (*c_bsp_init)(struct cpuinfo_x86 *); void (*c_init)(struct cpuinfo_x86 *); void (*c_identify)(struct cpuinfo_x86 *); void (*c_detect_tlb)(struct cpuinfo_x86 *); void (*c_bsp_resume)(struct cpuinfo_x86 *); int c_x86_vendor; #ifdef CONFIG_X86_32 /* Optional vendor specific routine to obtain the cache size. */ unsigned int (*legacy_cache_size)(struct cpuinfo_x86 *, unsigned int); /* Family/stepping-based lookup table for model names. */ struct legacy_cpu_model_info { int family; const char *model_names[16]; } legacy_models[5]; #endif }; struct _tlb_table { unsigned char descriptor; char tlb_type; unsigned int entries; /* unsigned int ways; */ char info[128]; }; #define cpu_dev_register(cpu_devX) \ static const struct cpu_dev *const __cpu_dev_##cpu_devX __used \ __attribute__((__section__(".x86_cpu_dev.init"))) = \ &cpu_devX; extern const struct cpu_dev *const __x86_cpu_dev_start[], *const __x86_cpu_dev_end[]; extern void get_cpu_cap(struct cpuinfo_x86 *c); extern void cpu_detect_cache_sizes(struct cpuinfo_x86 *c); extern void init_scattered_cpuid_features(struct cpuinfo_x86 *c); extern u32 get_scattered_cpuid_leaf(unsigned int level, unsigned int sub_leaf, enum cpuid_regs_idx reg); extern void init_intel_cacheinfo(struct cpuinfo_x86 *c); extern void init_amd_cacheinfo(struct cpuinfo_x86 *c); extern void detect_num_cpu_cores(struct cpuinfo_x86 *c); extern int detect_extended_topology(struct cpuinfo_x86 *c); extern void detect_ht(struct cpuinfo_x86 *c); unsigned int aperfmperf_get_khz(int cpu); extern void x86_spec_ctrl_setup_ap(void); #endif /* ARCH_X86_CPU_H */Overall Contributors
Person | Tokens | Prop | Commits | CommitProp |
Thomas Gleixner | 66 | 22.15% | 2 | 9.09% |
Dave Jones | 57 | 19.13% | 1 | 4.55% |
Jan Beulich | 35 | 11.74% | 2 | 9.09% |
Alex Shi | 34 | 11.41% | 1 | 4.55% |
Thomas Petazzoni | 22 | 7.38% | 1 | 4.55% |
Yinghai Lu | 13 | 4.36% | 2 | 9.09% |
Borislav Petkov | 13 | 4.36% | 3 | 13.64% |
David Wang | 11 | 3.69% | 2 | 9.09% |
Laura Abbott | 11 | 3.69% | 1 | 4.55% |
H. Peter Anvin | 10 | 3.36% | 1 | 4.55% |
Rafael J. Wysocki | 8 | 2.68% | 1 | 4.55% |
Andrew Morton | 7 | 2.35% | 1 | 4.55% |
Konrad Rzeszutek Wilk | 7 | 2.35% | 1 | 4.55% |
Robert Richter | 2 | 0.67% | 1 | 4.55% |
Greg Kroah-Hartman | 1 | 0.34% | 1 | 4.55% |
Andi Kleen | 1 | 0.34% | 1 | 4.55% |
Total | 298 | 100.00% | 22 | 100.00% |