1d67953f2b
Some Intel features are spread around in different CPUID leafs like 0x5, 0x6 and 0xA. Make this feature detection code common across i386 and x86_64. Display Intel Dynamic Acceleration feature in /proc/cpuinfo. This feature will be enabled automatically by current acpi-cpufreq driver. Refer to Intel Software Developer's Manual for more details about the feature. Thanks to hpa (H Peter Anvin) for the making the actual code detecting the scattered features data-driven. Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
55 lines
1.3 KiB
C
55 lines
1.3 KiB
C
#ifndef _ASM_REQUIRED_FEATURES_H
|
|
#define _ASM_REQUIRED_FEATURES_H 1
|
|
|
|
/* Define minimum CPUID feature set for kernel These bits are checked
|
|
really early to actually display a visible error message before the
|
|
kernel dies. Make sure to assign features to the proper mask!
|
|
|
|
Some requirements that are not in CPUID yet are also in the
|
|
CONFIG_X86_MINIMUM_CPU_FAMILY which is checked too.
|
|
|
|
The real information is in arch/i386/Kconfig.cpu, this just converts
|
|
the CONFIGs into a bitmask */
|
|
|
|
#ifndef CONFIG_MATH_EMULATION
|
|
# define NEED_FPU (1<<(X86_FEATURE_FPU & 31))
|
|
#else
|
|
# define NEED_FPU 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_X86_PAE
|
|
# define NEED_PAE (1<<(X86_FEATURE_PAE & 31))
|
|
#else
|
|
# define NEED_PAE 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_X86_CMOV
|
|
# define NEED_CMOV (1<<(X86_FEATURE_CMOV & 31))
|
|
#else
|
|
# define NEED_CMOV 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_X86_CMPXCHG64
|
|
# define NEED_CX8 (1<<(X86_FEATURE_CX8 & 31))
|
|
#else
|
|
# define NEED_CX8 0
|
|
#endif
|
|
|
|
#define REQUIRED_MASK0 (NEED_FPU|NEED_PAE|NEED_CMOV|NEED_CX8)
|
|
|
|
#ifdef CONFIG_X86_USE_3DNOW
|
|
# define NEED_3DNOW (1<<(X86_FEATURE_3DNOW & 31))
|
|
#else
|
|
# define NEED_3DNOW 0
|
|
#endif
|
|
|
|
#define REQUIRED_MASK1 (NEED_3DNOW)
|
|
|
|
#define REQUIRED_MASK2 0
|
|
#define REQUIRED_MASK3 0
|
|
#define REQUIRED_MASK4 0
|
|
#define REQUIRED_MASK5 0
|
|
#define REQUIRED_MASK6 0
|
|
#define REQUIRED_MASK7 0
|
|
|
|
#endif
|