[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC PATCH 02/22] x86/msr: implement MSR_SMI_COUNT for Dom0 on Intel
From: Edwin Török <edvin.torok@xxxxxxxxxx> Dom0 should always be able to read this MSR: it is useful when investigating performance issues in production. Although the count is Thread scoped, in practice all cores were observed to return the same count (perhaps due to implementation details of SMM), so do not require the cpu to be pinned in order to read it. This MSR exists on Intel since Nehalem. Backport: 4.15+ Signed-off-by: Edwin Török <edvin.torok@xxxxxxxxxx> --- xen/arch/x86/include/asm/msr-index.h | 3 +++ xen/arch/x86/msr.c | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/xen/arch/x86/include/asm/msr-index.h b/xen/arch/x86/include/asm/msr-index.h index 82a81bd0a2..2853a276ca 100644 --- a/xen/arch/x86/include/asm/msr-index.h +++ b/xen/arch/x86/include/asm/msr-index.h @@ -641,6 +641,9 @@ #define MSR_NHL_LBR_SELECT 0x000001c8 #define MSR_NHL_LASTBRANCH_TOS 0x000001c9 +/* Nehalem and newer other MSRs */ +#define MSR_SMI_COUNT 0x00000034 + /* Skylake (and newer) last-branch recording */ #define MSR_SKL_LASTBRANCH_0_FROM_IP 0x00000680 #define MSR_SKL_LASTBRANCH_0_TO_IP 0x000006c0 diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c index c33dc78cd8..0bf6d263e7 100644 --- a/xen/arch/x86/msr.c +++ b/xen/arch/x86/msr.c @@ -139,6 +139,13 @@ int guest_rdmsr(struct vcpu *v, uint32_t msr, uint64_t *val) *val = msrs->misc_features_enables.raw; break; + case MSR_SMI_COUNT: + if ( cp->x86_vendor != X86_VENDOR_INTEL ) + goto gp_fault; + if ( is_hardware_domain(d) && !rdmsr_safe(msr, *val) ) + break; + return X86EMUL_UNHANDLEABLE; + case MSR_P5_MC_ADDR: case MSR_P5_MC_TYPE: case MSR_IA32_MCG_CAP ... MSR_IA32_MCG_CTL: /* 0x179 -> 0x17b */ -- 2.41.0
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |