static unsigned int probe_intel_cpuid_faulting(void)
{
uint64_t x;
- return !rdmsr_safe(MSR_INTEL_PLATFORM_INFO, x) && (x & (1u<<31));
+ return !rdmsr_safe(MSR_INTEL_PLATFORM_INFO, x) &&
+ (x & MSR_PLATFORM_INFO_CPUID_FAULTING);
}
static DEFINE_PER_CPU(bool_t, cpuid_faulting_enabled);
return;
rdmsr(MSR_INTEL_MISC_FEATURES_ENABLES, lo, hi);
- lo &= ~1;
+ lo &= ~MSR_MISC_FEATURES_CPUID_FAULTING;
if (enable)
- lo |= 1;
+ lo |= MSR_MISC_FEATURES_CPUID_FAULTING;
wrmsr(MSR_INTEL_MISC_FEATURES_ENABLES, lo, hi);
this_cpu(cpuid_faulting_enabled) = enable;
/* Intel cpuid faulting MSRs */
#define MSR_INTEL_PLATFORM_INFO 0x000000ce
+#define _MSR_PLATFORM_INFO_CPUID_FAULTING 31
+#define MSR_PLATFORM_INFO_CPUID_FAULTING (1ULL << _MSR_PLATFORM_INFO_CPUID_FAULTING)
+
#define MSR_INTEL_MISC_FEATURES_ENABLES 0x00000140
+#define _MSR_MISC_FEATURES_CPUID_FAULTING 0
+#define MSR_MISC_FEATURES_CPUID_FAULTING (1ULL << _MSR_MISC_FEATURES_CPUID_FAULTING)
/* Geode defined MSRs */
#define MSR_GEODE_BUSCONT_CONF0 0x00001900