[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 3/3] x86/msr: Use the architectural layout for MSR_{MISC_ENABLES, PLATFORM_INFO}
This simplifies future interactions with the toolstack, by removing the need for per-MSR custom accessors when shuffling data in/out of a policy. Use a 32bit raw backing integer (for simplicity), and use a bitfield to move the cpuid_faulting field to its appropriate position. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> CC: Sergey Dyasli <sergey.dyasli@xxxxxxxxxx> --- xen/arch/x86/msr.c | 9 +++------ xen/include/asm-x86/msr.h | 15 +++++++++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c index 6599f10..d035c67 100644 --- a/xen/arch/x86/msr.c +++ b/xen/arch/x86/msr.c @@ -139,8 +139,7 @@ int guest_rdmsr(const struct vcpu *v, uint32_t msr, uint64_t *val) break; case MSR_INTEL_PLATFORM_INFO: - *val = (uint64_t)dp->plaform_info.cpuid_faulting << - _MSR_PLATFORM_INFO_CPUID_FAULTING; + *val = dp->plaform_info.raw; break; case MSR_ARCH_CAPABILITIES: @@ -148,8 +147,7 @@ int guest_rdmsr(const struct vcpu *v, uint32_t msr, uint64_t *val) goto gp_fault; case MSR_INTEL_MISC_FEATURES_ENABLES: - *val = (uint64_t)vp->misc_features_enables.cpuid_faulting << - _MSR_MISC_FEATURES_CPUID_FAULTING; + *val = vp->misc_features_enables.raw; break; default: @@ -240,8 +238,7 @@ int guest_wrmsr(struct vcpu *v, uint32_t msr, uint64_t val) if ( val & rsvd ) goto gp_fault; - vp->misc_features_enables.cpuid_faulting = - val & MSR_MISC_FEATURES_CPUID_FAULTING; + vp->misc_features_enables.raw = val; if ( v == curr && is_hvm_domain(d) && cpu_has_cpuid_faulting && (old_cpuid_faulting ^ vp->misc_features_enables.cpuid_faulting) ) diff --git a/xen/include/asm-x86/msr.h b/xen/include/asm-x86/msr.h index c28371c..599ef72 100644 --- a/xen/include/asm-x86/msr.h +++ b/xen/include/asm-x86/msr.h @@ -261,8 +261,12 @@ static inline void wrmsr_tsc_aux(uint32_t val) struct msr_domain_policy { /* 0x000000ce MSR_INTEL_PLATFORM_INFO */ - struct { - bool cpuid_faulting; + union { + uint32_t raw; + struct { + uint32_t :31; + bool cpuid_faulting:1; + }; } plaform_info; }; @@ -288,8 +292,11 @@ struct msr_vcpu_policy } spec_ctrl; /* 0x00000140 MSR_INTEL_MISC_FEATURES_ENABLES */ - struct { - bool cpuid_faulting; + union { + uint32_t raw; + struct { + bool cpuid_faulting:1; + }; } misc_features_enables; }; -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |