Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aa3341a1 authored by H. Peter Anvin's avatar H. Peter Anvin
Browse files

Merge branch 'x86/cpu' into x86/x2apic

Conflicts:

	arch/x86/kernel/cpu/feature_names.c
	include/asm-x86/cpufeature.h
parents 42390cde af2e1f27
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@

#include <stdio.h>

#include "../kernel/cpu/feature_names.c"
#include "../kernel/cpu/capflags.c"

#if NCAPFLAGS > 8
# error "Need to adjust the boot code handling of CPUID strings"
+10 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@
#

obj-y			:= intel_cacheinfo.o addon_cpuid_features.o
obj-y			+= proc.o feature_names.o
obj-y			+= proc.o capflags.o powerflags.o

obj-$(CONFIG_X86_32)	+= common.o bugs.o cmpxchg.o
obj-$(CONFIG_X86_64)	+= common_64.o bugs_64.o
@@ -23,3 +23,12 @@ obj-$(CONFIG_MTRR) += mtrr/
obj-$(CONFIG_CPU_FREQ)	+= cpufreq/

obj-$(CONFIG_X86_LOCAL_APIC) += perfctr-watchdog.o

quiet_cmd_mkcapflags = MKCAP   $@
      cmd_mkcapflags = $(PERL) $(srctree)/$(src)/mkcapflags.pl $< $@

cpufeature = $(src)/../../../../include/asm-x86/cpufeature.h

targets += capflags.c
$(obj)/capflags.c: $(cpufeature) $(src)/mkcapflags.pl FORCE
	$(call if_changed,mkcapflags)
+0 −84
Original line number Diff line number Diff line
/*
 * Strings for the various x86 capability flags.
 *
 * This file must not contain any executable code.
 */

#include <asm/cpufeature.h>

/*
 * These flag bits must match the definitions in <asm/cpufeature.h>.
 * NULL means this bit is undefined or reserved; either way it doesn't
 * have meaning as far as Linux is concerned.  Note that it's important
 * to realize there is a difference between this table and CPUID -- if
 * applications want to get the raw CPUID data, they should access
 * /dev/cpu/<cpu_nr>/cpuid instead.
 */
const char * const x86_cap_flags[NCAPINTS*32] = {
	/* Intel-defined */
	"fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
	"cx8", "apic", NULL, "sep", "mtrr", "pge", "mca", "cmov",
	"pat", "pse36", "pn", "clflush", NULL, "dts", "acpi", "mmx",
	"fxsr", "sse", "sse2", "ss", "ht", "tm", "ia64", "pbe",

	/* AMD-defined */
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	NULL, NULL, NULL, "syscall", NULL, NULL, NULL, NULL,
	NULL, NULL, NULL, "mp", "nx", NULL, "mmxext", NULL,
	NULL, "fxsr_opt", "pdpe1gb", "rdtscp", NULL, "lm",
	"3dnowext", "3dnow",

	/* Transmeta-defined */
	"recovery", "longrun", NULL, "lrti", NULL, NULL, NULL, NULL,
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,

	/* Other (Linux-defined) */
	"cxmmx", "k6_mtrr", "cyrix_arr", "centaur_mcr",
	NULL, NULL, NULL, NULL,
	"constant_tsc", "up", NULL, "arch_perfmon",
	"pebs", "bts", NULL, NULL,
	"rep_good", NULL, NULL, NULL,
	"nopl", NULL, NULL, NULL,
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,

	/* Intel-defined (#2) */
	"pni", NULL, NULL, "monitor", "ds_cpl", "vmx", "smx", "est",
	"tm2", "ssse3", "cid", NULL, NULL, "cx16", "xtpr", NULL,
	NULL, NULL, "dca", "sse4_1", "sse4_2", "x2apic", NULL, "popcnt",
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,

	/* VIA/Cyrix/Centaur-defined */
	NULL, NULL, "rng", "rng_en", NULL, NULL, "ace", "ace_en",
	"ace2", "ace2_en", "phe", "phe_en", "pmm", "pmm_en", NULL, NULL,
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,

	/* AMD-defined (#2) */
	"lahf_lm", "cmp_legacy", "svm", "extapic",
	"cr8_legacy", "abm", "sse4a", "misalignsse",
	"3dnowprefetch", "osvw", "ibs", "sse5",
	"skinit", "wdt", NULL, NULL,
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,

	/* Auxiliary (Linux-defined) */
	"ida", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
	NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
};

const char *const x86_power_flags[32] = {
	"ts",	/* temperature sensor */
	"fid",  /* frequency id control */
	"vid",  /* voltage id control */
	"ttp",  /* thermal trip */
	"tm",
	"stc",
	"100mhzsteps",
	"hwpstate",
	"",	/* tsc invariant mapped to constant_tsc */
		/* nothing */
};
+32 −0
Original line number Diff line number Diff line
#!/usr/bin/perl
#
# Generate the x86_cap_flags[] array from include/asm-x86/cpufeature.h
#

($in, $out) = @ARGV;

open(IN, "< $in\0")   or die "$0: cannot open: $in: $!\n";
open(OUT, "> $out\0") or die "$0: cannot create: $out: $!\n";

print OUT "#include <asm/cpufeature.h>\n\n";
print OUT "const char * const x86_cap_flags[NCAPINTS*32] = {\n";

while (defined($line = <IN>)) {
	if ($line =~ /^\s*\#\s*define\s+(X86_FEATURE_(\S+))\s+(.*)$/) {
		$macro = $1;
		$feature = $2;
		$tail = $3;
		if ($tail =~ /\/\*\s*\"([^"]*)\".*\*\//) {
			$feature = $1;
		}

		if ($feature ne '') {
			printf OUT "\t%-32s = \"%s\",\n",
				"[$macro]", "\L$feature";
		}
	}
}
print OUT "};\n";

close(IN);
close(OUT);
+20 −0
Original line number Diff line number Diff line
/*
 * Strings for the various x86 power flags
 *
 * This file must not contain any executable code.
 */

#include <asm/cpufeature.h>

const char *const x86_power_flags[32] = {
	"ts",	/* temperature sensor */
	"fid",  /* frequency id control */
	"vid",  /* voltage id control */
	"ttp",  /* thermal trip */
	"tm",
	"stc",
	"100mhzsteps",
	"hwpstate",
	"",	/* tsc invariant mapped to constant_tsc */
		/* nothing */
};
Loading