[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 01/27] x86/cpuid: Untangle the <asm/cpufeature.h> include hierachy
The use of X86_FEATURES_ONLY was shortlived in Linux for the same problem encountered here. The following series needs to add extra includes to asm/cpuid.h, which breaks the build elsewhere given the current hierachy. Move the feature definitions into a separate header file, which also matches the solution Linux used. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> --- xen/include/asm-x86/bitops.h | 3 +-- xen/include/asm-x86/cpufeature.h | 29 +++-------------------------- xen/include/asm-x86/cpufeatures.h | 24 ++++++++++++++++++++++++ xen/include/asm-x86/cpufeatureset.h | 6 +++--- xen/include/asm-x86/cpuid.h | 4 ---- 5 files changed, 31 insertions(+), 35 deletions(-) create mode 100644 xen/include/asm-x86/cpufeatures.h diff --git a/xen/include/asm-x86/bitops.h b/xen/include/asm-x86/bitops.h index a8db7e4..fd494e8 100644 --- a/xen/include/asm-x86/bitops.h +++ b/xen/include/asm-x86/bitops.h @@ -6,8 +6,7 @@ */ #include <asm/alternative.h> -#define X86_FEATURES_ONLY -#include <asm/cpufeature.h> +#include <asm/cpufeatureset.h> /* * We specify the memory operand as both input and output because the memory diff --git a/xen/include/asm-x86/cpufeature.h b/xen/include/asm-x86/cpufeature.h index c7c8520..d45e650 100644 --- a/xen/include/asm-x86/cpufeature.h +++ b/xen/include/asm-x86/cpufeature.h @@ -3,29 +3,8 @@ * * Defines x86 CPU feature bits */ -#if defined(XEN_CPUFEATURE) - -/* Other features, Xen-defined mapping. */ -/* This range is used for feature bits which conflict or are synthesized */ -XEN_CPUFEATURE(CONSTANT_TSC, (FSCAPINTS+0)*32+ 0) /* TSC ticks at a constant rate */ -XEN_CPUFEATURE(NONSTOP_TSC, (FSCAPINTS+0)*32+ 1) /* TSC does not stop in C states */ -XEN_CPUFEATURE(ARAT, (FSCAPINTS+0)*32+ 2) /* Always running APIC timer */ -XEN_CPUFEATURE(ARCH_PERFMON, (FSCAPINTS+0)*32+ 3) /* Intel Architectural PerfMon */ -XEN_CPUFEATURE(TSC_RELIABLE, (FSCAPINTS+0)*32+ 4) /* TSC is known to be reliable */ -XEN_CPUFEATURE(XTOPOLOGY, (FSCAPINTS+0)*32+ 5) /* cpu topology enum extensions */ -XEN_CPUFEATURE(CPUID_FAULTING, (FSCAPINTS+0)*32+ 6) /* cpuid faulting */ -XEN_CPUFEATURE(CLFLUSH_MONITOR, (FSCAPINTS+0)*32+ 7) /* clflush reqd with monitor */ -XEN_CPUFEATURE(APERFMPERF, (FSCAPINTS+0)*32+ 8) /* APERFMPERF */ -XEN_CPUFEATURE(MFENCE_RDTSC, (FSCAPINTS+0)*32+ 9) /* MFENCE synchronizes RDTSC */ -XEN_CPUFEATURE(XEN_SMEP, (FSCAPINTS+0)*32+ 10) /* SMEP gets used by Xen itself */ -XEN_CPUFEATURE(XEN_SMAP, (FSCAPINTS+0)*32+ 11) /* SMAP gets used by Xen itself */ - -#define NCAPINTS (FSCAPINTS + 1) /* N 32-bit words worth of info */ - -#elif !defined(__ASM_I386_CPUFEATURE_H) -#ifndef X86_FEATURES_ONLY +#ifndef __ASM_I386_CPUFEATURE_H #define __ASM_I386_CPUFEATURE_H -#endif #include <xen/const.h> #include <asm/cpuid.h> @@ -37,7 +16,7 @@ XEN_CPUFEATURE(XEN_SMAP, (FSCAPINTS+0)*32+ 11) /* SMAP gets used by Xen i /* An alias of a feature we know is always going to be present. */ #define X86_FEATURE_ALWAYS X86_FEATURE_LM -#if !defined(__ASSEMBLY__) && !defined(X86_FEATURES_ONLY) +#ifndef __ASSEMBLY__ #include <xen/bitops.h> #define cpu_has(c, bit) test_bit(bit, (c)->x86_capability) @@ -139,9 +118,7 @@ struct cpuid4_info { }; int cpuid4_cache_lookup(int index, struct cpuid4_info *this_leaf); -#endif - -#undef X86_FEATURES_ONLY +#endif /* !__ASSEMBLY__ */ #endif /* __ASM_I386_CPUFEATURE_H */ diff --git a/xen/include/asm-x86/cpufeatures.h b/xen/include/asm-x86/cpufeatures.h new file mode 100644 index 0000000..bc98227 --- /dev/null +++ b/xen/include/asm-x86/cpufeatures.h @@ -0,0 +1,24 @@ +/* + * Explicitly intended for multiple inclusion. + */ + +#include <asm/cpuid-autogen.h> + +#define FSCAPINTS FEATURESET_NR_ENTRIES + +#define NCAPINTS (FSCAPINTS + 1) /* N 32-bit words worth of info */ + +/* Other features, Xen-defined mapping. */ +/* This range is used for feature bits which conflict or are synthesized */ +XEN_CPUFEATURE(CONSTANT_TSC, (FSCAPINTS+0)*32+ 0) /* TSC ticks at a constant rate */ +XEN_CPUFEATURE(NONSTOP_TSC, (FSCAPINTS+0)*32+ 1) /* TSC does not stop in C states */ +XEN_CPUFEATURE(ARAT, (FSCAPINTS+0)*32+ 2) /* Always running APIC timer */ +XEN_CPUFEATURE(ARCH_PERFMON, (FSCAPINTS+0)*32+ 3) /* Intel Architectural PerfMon */ +XEN_CPUFEATURE(TSC_RELIABLE, (FSCAPINTS+0)*32+ 4) /* TSC is known to be reliable */ +XEN_CPUFEATURE(XTOPOLOGY, (FSCAPINTS+0)*32+ 5) /* cpu topology enum extensions */ +XEN_CPUFEATURE(CPUID_FAULTING, (FSCAPINTS+0)*32+ 6) /* cpuid faulting */ +XEN_CPUFEATURE(CLFLUSH_MONITOR, (FSCAPINTS+0)*32+ 7) /* clflush reqd with monitor */ +XEN_CPUFEATURE(APERFMPERF, (FSCAPINTS+0)*32+ 8) /* APERFMPERF */ +XEN_CPUFEATURE(MFENCE_RDTSC, (FSCAPINTS+0)*32+ 9) /* MFENCE synchronizes RDTSC */ +XEN_CPUFEATURE(XEN_SMEP, (FSCAPINTS+0)*32+10) /* SMEP gets used by Xen itself */ +XEN_CPUFEATURE(XEN_SMAP, (FSCAPINTS+0)*32+11) /* SMAP gets used by Xen itself */ diff --git a/xen/include/asm-x86/cpufeatureset.h b/xen/include/asm-x86/cpufeatureset.h index c54ff2b..f179229 100644 --- a/xen/include/asm-x86/cpufeatureset.h +++ b/xen/include/asm-x86/cpufeatureset.h @@ -8,20 +8,20 @@ #define XEN_CPUFEATURE(name, value) X86_FEATURE_##name = value, enum { #include <public/arch-x86/cpufeatureset.h> -#include <asm/cpufeature.h> +#include <asm/cpufeatures.h> }; #undef XEN_CPUFEATURE #define XEN_CPUFEATURE(name, value) asm (".equ X86_FEATURE_" #name ", " \ __stringify(value)); #include <public/arch-x86/cpufeatureset.h> -#include <asm/cpufeature.h> +#include <asm/cpufeatures.h> #else /* !__ASSEMBLY__ */ #define XEN_CPUFEATURE(name, value) .equ X86_FEATURE_##name, value #include <public/arch-x86/cpufeatureset.h> -#include <asm/cpufeature.h> +#include <asm/cpufeatures.h> #endif /* __ASSEMBLY__ */ diff --git a/xen/include/asm-x86/cpuid.h b/xen/include/asm-x86/cpuid.h index ec8bbb5..05f2c9a 100644 --- a/xen/include/asm-x86/cpuid.h +++ b/xen/include/asm-x86/cpuid.h @@ -1,10 +1,6 @@ #ifndef __X86_CPUID_H__ #define __X86_CPUID_H__ -#include <asm/cpuid-autogen.h> - -#define FSCAPINTS FEATURESET_NR_ENTRIES - #include <asm/cpufeatureset.h> #include <asm/percpu.h> -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |