]> xenbits.xensource.com Git - people/vhanquez/xen.git/commitdiff
x86/vMCE: don't advertise features we don't support
authorJan Beulich <jbeulich@suse.com>
Fri, 24 Feb 2012 08:03:43 +0000 (09:03 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 24 Feb 2012 08:03:43 +0000 (09:03 +0100)
... or even know of. Apart from CMCI, which was masked off already,
this now also suppresses the advertising of extended state registers
(reading of which would likely be meaningless in a guest and represent
an information leak).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
xen/arch/x86/cpu/mcheck/vmce.c
xen/arch/x86/cpu/mcheck/x86_mca.h

index 2eadfb9f8d536742f546952670f290eef71992a0..ac9cb8422ec93460fecf19ea82ee7061bb4d3916 100644 (file)
@@ -457,7 +457,7 @@ int vmce_init(struct cpuinfo_x86 *c)
 
     rdmsrl(MSR_IA32_MCG_CAP, value);
     /* For Guest vMCE usage */
-    g_mcg_cap = value & ~MCG_CMCI_P;
+    g_mcg_cap = value & (MCG_CAP_COUNT | MCG_CTL_P | MCG_TES_P | MCG_SER_P);
     if (value & MCG_CTL_P)
         rdmsrl(MSR_IA32_MCG_CTL, h_mcg_ctl);
 
index 2a91f3ae265421ebbf0a574081d318ad2575f34b..885d7ba21a3f916a5ac002c9dc16d897182ce28f 100644 (file)
 
 
 /* Bitfield of the MSR_IA32_MCG_CAP register */
-#define MCG_SER_P               (1UL<<24)
 #define MCG_CAP_COUNT           0x00000000000000ffULL
-#define MCG_CTL_P               0x0000000000000100ULL
-#define MCG_EXT_P              (1UL<<9)
-#define MCG_EXT_CNT            (16)
-#define MCG_CMCI_P             (1UL<<10)
+#define MCG_CTL_P               (1ULL<<8)
+#define MCG_EXT_P               (1ULL<<9)
+#define MCG_CMCI_P              (1ULL<<10)
+#define MCG_TES_P               (1ULL<<11)
+#define MCG_EXT_CNT             16
+#define MCG_SER_P               (1ULL<<24)
 /* Other bits are reserved */
 
 /* Bitfield of the MSR_IA32_MCG_STATUS register */