cregit-Linux how code gets into the kernel

Release 4.14 arch/x86/kernel/cpu/proc.c

// SPDX-License-Identifier: GPL-2.0
#include <linux/smp.h>
#include <linux/timex.h>
#include <linux/string.h>
#include <linux/seq_file.h>
#include <linux/cpufreq.h>

/*
 *      Get CPU information for use by the procfs.
 */

static void show_cpuinfo_core(struct seq_file *m, struct cpuinfo_x86 *c, unsigned int cpu) { #ifdef CONFIG_SMP seq_printf(m, "physical id\t: %d\n", c->phys_proc_id); seq_printf(m, "siblings\t: %d\n", cpumask_weight(topology_core_cpumask(cpu))); seq_printf(m, "core id\t\t: %d\n", c->cpu_core_id); seq_printf(m, "cpu cores\t: %d\n", c->booted_cores); seq_printf(m, "apicid\t\t: %d\n", c->apicid); seq_printf(m, "initial apicid\t: %d\n", c->initial_apicid); #endif }

Contributors

PersonTokensPropCommitsCommitProp
Hiroshi Shimamoto7073.68%120.00%
Yinghai Lu2223.16%120.00%
Bartosz Golaszewski11.05%120.00%
Jaswinder Singh Rajput11.05%120.00%
Rusty Russell11.05%120.00%
Total95100.00%5100.00%

#ifdef CONFIG_X86_32
static void show_cpuinfo_misc(struct seq_file *m, struct cpuinfo_x86 *c) { seq_printf(m, "fdiv_bug\t: %s\n" "f00f_bug\t: %s\n" "coma_bug\t: %s\n" "fpu\t\t: %s\n" "fpu_exception\t: %s\n" "cpuid level\t: %d\n" "wp\t\t: yes\n", static_cpu_has_bug(X86_BUG_FDIV) ? "yes" : "no", static_cpu_has_bug(X86_BUG_F00F) ? "yes" : "no", static_cpu_has_bug(X86_BUG_COMA) ? "yes" : "no", static_cpu_has(X86_FEATURE_FPU) ? "yes" : "no", static_cpu_has(X86_FEATURE_FPU) ? "yes" : "no", c->cpuid_level); }

Contributors

PersonTokensPropCommitsCommitProp
Hiroshi Shimamoto5773.08%116.67%
Borislav Petkov1215.38%350.00%
H. Peter Anvin810.26%116.67%
Mathias Krause11.28%116.67%
Total78100.00%6100.00%

#else
static void show_cpuinfo_misc(struct seq_file *m, struct cpuinfo_x86 *c) { seq_printf(m, "fpu\t\t: yes\n" "fpu_exception\t: yes\n" "cpuid level\t: %d\n" "wp\t\t: yes\n", c->cpuid_level); }

Contributors

PersonTokensPropCommitsCommitProp
Hiroshi Shimamoto30100.00%1100.00%
Total30100.00%1100.00%

#endif
static int show_cpuinfo(struct seq_file *m, void *v) { struct cpuinfo_x86 *c = v; unsigned int cpu; int i; cpu = c->cpu_index; seq_printf(m, "processor\t: %u\n" "vendor_id\t: %s\n" "cpu family\t: %d\n" "model\t\t: %u\n" "model name\t: %s\n", cpu, c->x86_vendor_id[0] ? c->x86_vendor_id : "unknown", c->x86, c->x86_model, c->x86_model_id[0] ? c->x86_model_id : "unknown"); if (c->x86_mask || c->cpuid_level >= 0) seq_printf(m, "stepping\t: %d\n", c->x86_mask); else seq_puts(m, "stepping\t: unknown\n"); if (c->microcode) seq_printf(m, "microcode\t: 0x%x\n", c->microcode); if (cpu_has(c, X86_FEATURE_TSC)) { unsigned int freq = cpufreq_quick_get(cpu); if (!freq) freq = cpu_khz; seq_printf(m, "cpu MHz\t\t: %u.%03u\n", freq / 1000, (freq % 1000)); } /* Cache size */ if (c->x86_cache_size >= 0) seq_printf(m, "cache size\t: %d KB\n", c->x86_cache_size); show_cpuinfo_core(m, c, cpu); show_cpuinfo_misc(m, c); seq_puts(m, "flags\t\t:"); for (i = 0; i < 32*NCAPINTS; i++) if (cpu_has(c, i) && x86_cap_flags[i] != NULL) seq_printf(m, " %s", x86_cap_flags[i]); seq_puts(m, "\nbugs\t\t:"); for (i = 0; i < 32*NBUGINTS; i++) { unsigned int bug_bit = 32*NCAPINTS + i; if (cpu_has_bug(c, bug_bit) && x86_bug_flags[i]) seq_printf(m, " %s", x86_bug_flags[i]); } seq_printf(m, "\nbogomips\t: %lu.%02lu\n", c->loops_per_jiffy/(500000/HZ), (c->loops_per_jiffy/(5000/HZ)) % 100); #ifdef CONFIG_X86_64 if (c->x86_tlbsize > 0) seq_printf(m, "TLB size\t: %d 4K pages\n", c->x86_tlbsize); #endif seq_printf(m, "clflush size\t: %u\n", c->x86_clflush_size); seq_printf(m, "cache_alignment\t: %d\n", c->x86_cache_alignment); seq_printf(m, "address sizes\t: %u bits physical, %u bits virtual\n", c->x86_phys_bits, c->x86_virt_bits); seq_puts(m, "power management:"); for (i = 0; i < 32; i++) { if (c->x86_power & (1 << i)) { if (i < ARRAY_SIZE(x86_power_flags) && x86_power_flags[i]) seq_printf(m, "%s%s", x86_power_flags[i][0] ? " " : "", x86_power_flags[i]); else seq_printf(m, " [%d]", i); } } seq_puts(m, "\n\n"); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Dave Jones19538.39%210.53%
Hiroshi Shimamoto11322.24%315.79%
Andi Kleen9318.31%315.79%
Borislav Petkov6112.01%210.53%
Rafael J. Wysocki112.17%15.26%
Linus Torvalds112.17%210.53%
Robert Love61.18%15.26%
Suresh B. Siddha61.18%15.26%
Mike Travis50.98%15.26%
Rasmus Villemoes50.98%15.26%
Andrew Morton10.20%15.26%
Rohit Seth10.20%15.26%
Total508100.00%19100.00%


static void *c_start(struct seq_file *m, loff_t *pos) { *pos = cpumask_next(*pos - 1, cpu_online_mask); if ((*pos) < nr_cpu_ids) return &cpu_data(*pos); return NULL; }

Contributors

PersonTokensPropCommitsCommitProp
Dave Jones2448.98%120.00%
Mike Travis1224.49%240.00%
Lai Jiangshan1122.45%120.00%
Rusty Russell24.08%120.00%
Total49100.00%5100.00%


static void *c_next(struct seq_file *m, void *v, loff_t *pos) { (*pos)++; return c_start(m, pos); }

Contributors

PersonTokensPropCommitsCommitProp
Dave Jones3191.18%150.00%
Lai Jiangshan38.82%150.00%
Total34100.00%2100.00%


static void c_stop(struct seq_file *m, void *v) { }

Contributors

PersonTokensPropCommitsCommitProp
Dave Jones14100.00%1100.00%
Total14100.00%1100.00%

const struct seq_operations cpuinfo_op = { .start = c_start, .next = c_next, .stop = c_stop, .show = show_cpuinfo, };

Overall Contributors

PersonTokensPropCommitsCommitProp
Dave Jones29534.34%25.88%
Hiroshi Shimamoto27431.90%38.82%
Andi Kleen9310.83%38.82%
Borislav Petkov738.50%514.71%
Yinghai Lu222.56%12.94%
Mike Travis171.98%25.88%
Linus Torvalds141.63%25.88%
Lai Jiangshan141.63%12.94%
Rusty Russell111.28%38.82%
Rafael J. Wysocki111.28%12.94%
H. Peter Anvin80.93%12.94%
Suresh B. Siddha60.70%12.94%
Robert Love60.70%12.94%
Rasmus Villemoes50.58%12.94%
Jaswinder Singh Rajput40.47%12.94%
Jan Engelhardt10.12%12.94%
Rohit Seth10.12%12.94%
Bartosz Golaszewski10.12%12.94%
Mathias Krause10.12%12.94%
Andrew Morton10.12%12.94%
Greg Kroah-Hartman10.12%12.94%
Total859100.00%34100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.