cregit-Linux how code gets into the kernel

Release 4.14 arch/x86/boot/cpu.c

Directory: arch/x86/boot
/* -*- linux-c -*- ------------------------------------------------------- *
 *
 *   Copyright (C) 1991, 1992 Linus Torvalds
 *   Copyright 2007-2008 rPath, Inc. - All Rights Reserved
 *
 *   This file is part of the Linux kernel, and is made available under
 *   the terms of the GNU General Public License version 2.
 *
 * ----------------------------------------------------------------------- */

/*
 * arch/x86/boot/cpu.c
 *
 * Check for obligatory CPU features and abort if the features are not
 * present.
 */

#include "boot.h"
#ifdef CONFIG_X86_FEATURE_NAMES
#include "cpustr.h"
#endif


static char *cpu_name(int level) { static char buf[6]; if (level == 64) { return "x86-64"; } else { if (level == 15) level = 6; sprintf(buf, "i%d86", level); return buf; } }

Contributors

PersonTokensPropCommitsCommitProp
H. Peter Anvin4381.13%150.00%
Dave Jones1018.87%150.00%
Total53100.00%2100.00%


static void show_cap_strs(u32 *err_flags) { int i, j; #ifdef CONFIG_X86_FEATURE_NAMES const unsigned char *msg_strs = (const unsigned char *)x86_cap_strs; for (i = 0; i < NCAPINTS; i++) { u32 e = err_flags[i]; for (j = 0; j < 32; j++) { if (msg_strs[0] < i || (msg_strs[0] == i && msg_strs[1] < j)) { /* Skip to the next string */ msg_strs += 2; while (*msg_strs++) ; } if (e & 1) { if (msg_strs[0] == i && msg_strs[1] == j && msg_strs[2]) printf("%s ", msg_strs+2); else printf("%d:%d ", i, j); } e >>= 1; } } #else for (i = 0; i < NCAPINTS; i++) { u32 e = err_flags[i]; for (j = 0; j < 32; j++) { if (e & 1) printf("%d:%d ", i, j); e >>= 1; } } #endif }

Contributors

PersonTokensPropCommitsCommitProp
H. Peter Anvin14866.67%375.00%
Josh Triplett7433.33%125.00%
Total222100.00%4100.00%


int validate_cpu(void) { u32 *err_flags; int cpu_level, req_level; check_cpu(&cpu_level, &req_level, &err_flags); if (cpu_level < req_level) { printf("This kernel requires an %s CPU, ", cpu_name(req_level)); printf("but only detected an %s CPU.\n", cpu_name(cpu_level)); return -1; } if (err_flags) { puts("This kernel requires the following features " "not present on the CPU:\n"); show_cap_strs(err_flags); putchar('\n'); return -1; } else if (check_knl_erratum()) { return -1; } else { return 0; } }

Contributors

PersonTokensPropCommitsCommitProp
Josh Triplett7572.12%133.33%
H. Peter Anvin1716.35%133.33%
Dave Hansen1211.54%133.33%
Total104100.00%3100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
H. Peter Anvin21655.10%350.00%
Josh Triplett15439.29%116.67%
Dave Hansen123.06%116.67%
Dave Jones102.55%116.67%
Total392100.00%6100.00%
Directory: arch/x86/boot
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.