From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH] x86: fix pv cpuid masking Date: Tue, 15 Jun 2010 12:49:44 +0100 Message-ID: <4C1784F8020000780000677C@vpn.id2.novell.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__Part93BEC5C8.0__=" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=__Part93BEC5C8.0__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Invert initial values of the variables parsed into from the command line, so that completely clearing out one or more of the four bit fields is possible. Further, consolidate the command line parameter specifications into a single place. Finally, as per "Intel Virtualization Technology FlexMigration Application Note" (http://www.intel.com/Assets/PDF/manual/323850.pdf), also handle family 6 model 0x1f. What remains open is the question whether pv_cpuid() shouldn't also consume these masks. Signed-off-by: Jan Beulich --- 2010-06-15.orig/xen/arch/x86/cpu/amd.c 2010-06-15 09:34:25.0000000= 00 +0200 +++ 2010-06-15/xen/arch/x86/cpu/amd.c 2010-06-15 09:44:02.000000000 = +0200 @@ -31,14 +31,6 @@ static char opt_famrev[14]; string_param("cpuid_mask_cpu", opt_famrev); =20 -/* Finer-grained CPUID feature control. */ -static unsigned int opt_cpuid_mask_ecx, opt_cpuid_mask_edx; -integer_param("cpuid_mask_ecx", opt_cpuid_mask_ecx); -integer_param("cpuid_mask_edx", opt_cpuid_mask_edx); -static unsigned int opt_cpuid_mask_ext_ecx, opt_cpuid_mask_ext_edx; -integer_param("cpuid_mask_ext_ecx", opt_cpuid_mask_ext_ecx); -integer_param("cpuid_mask_ext_edx", opt_cpuid_mask_ext_edx); - static inline void wrmsr_amd(unsigned int index, unsigned int lo,=20 unsigned int hi) { @@ -59,7 +51,7 @@ static inline void wrmsr_amd(unsigned in * * The processor revision string parameter has precedene. */ -static void __devinit set_cpuidmask(struct cpuinfo_x86 *c) +static void __devinit set_cpuidmask(const struct cpuinfo_x86 *c) { static unsigned int feat_ecx, feat_edx; static unsigned int extfeat_ecx, extfeat_edx; @@ -74,12 +66,12 @@ static void __devinit set_cpuidmask(stru ASSERT((status =3D=3D not_parsed) && (smp_processor_id() =3D=3D = 0)); status =3D no_mask; =20 - if (opt_cpuid_mask_ecx | opt_cpuid_mask_edx | - opt_cpuid_mask_ext_ecx | opt_cpuid_mask_ext_edx) { - feat_ecx =3D opt_cpuid_mask_ecx ? : ~0U; - feat_edx =3D opt_cpuid_mask_edx ? : ~0U; - extfeat_ecx =3D opt_cpuid_mask_ext_ecx ? : ~0U; - extfeat_edx =3D opt_cpuid_mask_ext_edx ? : ~0U; + if (~(opt_cpuid_mask_ecx & opt_cpuid_mask_edx & + opt_cpuid_mask_ext_ecx & opt_cpuid_mask_ext_edx)) { + feat_ecx =3D opt_cpuid_mask_ecx; + feat_edx =3D opt_cpuid_mask_edx; + extfeat_ecx =3D opt_cpuid_mask_ext_ecx; + extfeat_edx =3D opt_cpuid_mask_ext_edx; } else if (*opt_famrev =3D=3D '\0') { return; } else if (!strcmp(opt_famrev, "fam_0f_rev_c")) { --- 2010-06-15.orig/xen/arch/x86/cpu/common.c 2010-06-15 09:34:25.0000000= 00 +0200 +++ 2010-06-15/xen/arch/x86/cpu/common.c 2010-06-15 09:35:39.0000000= 00 +0200 @@ -22,6 +22,15 @@ static int cachesize_override __cpuinitd static int disable_x86_fxsr __cpuinitdata; static int disable_x86_serial_nr __cpuinitdata; =20 +unsigned int __devinitdata opt_cpuid_mask_ecx =3D ~0u; +integer_param("cpuid_mask_ecx", opt_cpuid_mask_ecx); +unsigned int __devinitdata opt_cpuid_mask_edx =3D ~0u; +integer_param("cpuid_mask_edx", opt_cpuid_mask_edx); +unsigned int __devinitdata opt_cpuid_mask_ext_ecx =3D ~0u; +integer_param("cpuid_mask_ext_ecx", opt_cpuid_mask_ext_ecx); +unsigned int __devinitdata opt_cpuid_mask_ext_edx =3D ~0u; +integer_param("cpuid_mask_ext_edx", opt_cpuid_mask_ext_edx); + struct cpu_dev * cpu_devs[X86_VENDOR_NUM] =3D {}; =20 /* --- 2010-06-15.orig/xen/arch/x86/cpu/cpu.h 2010-06-15 09:34:25.0000000= 00 +0200 +++ 2010-06-15/xen/arch/x86/cpu/cpu.h 2010-06-15 09:35:39.000000000 = +0200 @@ -21,6 +21,9 @@ struct cpu_dev { =20 extern struct cpu_dev * cpu_devs [X86_VENDOR_NUM]; =20 +extern unsigned int opt_cpuid_mask_ecx, opt_cpuid_mask_edx; +extern unsigned int opt_cpuid_mask_ext_ecx, opt_cpuid_mask_ext_edx; + extern int get_model_name(struct cpuinfo_x86 *c); extern void display_cacheinfo(struct cpuinfo_x86 *c); =20 --- 2010-06-15.orig/xen/arch/x86/cpu/intel.c 2010-06-11 11:41:35.0000000= 00 +0200 +++ 2010-06-15/xen/arch/x86/cpu/intel.c 2010-06-15 09:50:44.000000000 = +0200 @@ -20,19 +20,6 @@ =20 extern int trap_init_f00f_bug(void); =20 -/* - * opt_cpuid_mask_ecx/edx: cpuid.1[ecx, edx] feature mask. - * For example, E8400[Intel Core 2 Duo Processor series] ecx =3D = 0x0008E3FD,=20 - * edx =3D 0xBFEBFBFF when executing CPUID.EAX =3D 1 normally. If you = want to - * 'rev down' to E8400, you can set these values in these Xen boot = parameters. - */ -static unsigned int opt_cpuid_mask_ecx, opt_cpuid_mask_edx; -integer_param("cpuid_mask_ecx", opt_cpuid_mask_ecx); -integer_param("cpuid_mask_edx", opt_cpuid_mask_edx); -static unsigned int opt_cpuid_mask_ext_ecx, opt_cpuid_mask_ext_edx; -integer_param("cpuid_mask_ext_ecx", opt_cpuid_mask_ext_ecx); -integer_param("cpuid_mask_ext_edx", opt_cpuid_mask_ext_edx); - static int use_xsave =3D 1; boolean_param("xsave", use_xsave); =20 @@ -43,46 +30,57 @@ boolean_param("xsave", use_xsave); struct movsl_mask movsl_mask __read_mostly; #endif =20 -static void __devinit set_cpuidmask(struct cpuinfo_x86 *c) +/* + * opt_cpuid_mask_ecx/edx: cpuid.1[ecx, edx] feature mask. + * For example, E8400[Intel Core 2 Duo Processor series] ecx =3D = 0x0008E3FD, + * edx =3D 0xBFEBFBFF when executing CPUID.EAX =3D 1 normally. If you = want to + * 'rev down' to E8400, you can set these values in these Xen boot = parameters. + */ +static void __devinit set_cpuidmask(const struct cpuinfo_x86 *c) { - unsigned int model =3D c->x86_model; - - if (!(opt_cpuid_mask_ecx | opt_cpuid_mask_edx |=20 - opt_cpuid_mask_ext_ecx | opt_cpuid_mask_ext_edx)) - return; + const char *extra =3D ""; =20 - if (c->x86 !=3D 0x6) /* Only family 6 supports this feature */ + if (!~(opt_cpuid_mask_ecx & opt_cpuid_mask_edx & + opt_cpuid_mask_ext_ecx & opt_cpuid_mask_ext_edx)) return; =20 - if ((model =3D=3D 0x1d) || ((model =3D=3D 0x17) && (c->x86_mask = >=3D 4))) { - wrmsr(MSR_IA32_CPUID_FEATURE_MASK1, - opt_cpuid_mask_ecx ? : ~0u, - opt_cpuid_mask_edx ? : ~0u); - } + /* Only family 6 supports this feature */ + switch ((c->x86 =3D=3D 6) * c->x86_model) { + case 0x17: + if ((c->x86_mask & 0x0f) < 4) + break; + /* fall through */ + case 0x1d: + wrmsr(MSR_INTEL_CPUID_FEATURE_MASK, + opt_cpuid_mask_ecx, + opt_cpuid_mask_edx); + if (!~(opt_cpuid_mask_ext_ecx & opt_cpuid_mask_ext_edx)) + return; + extra =3D "extended "; + break; /*=20 * CPU supports this feature if the processor signature meets the = following: * (CPUID.(EAX=3D01h):EAX) > 000106A2h, or * (CPUID.(EAX=3D01h):EAX) =3D=3D 000106Exh, 0002065xh, 000206Cxh, = 000206Exh, or 000206Fxh * */ - else if (((model =3D=3D 0x1a) && (c->x86_mask > 2)) - || model =3D=3D 0x1e - || model =3D=3D 0x25=20 - || model =3D=3D 0x2c=20 - || model =3D=3D 0x2e=20 - || model =3D=3D 0x2f) { - wrmsr(MSR_IA32_CPUID1_FEATURE_MASK, - opt_cpuid_mask_ecx ? : ~0u, - opt_cpuid_mask_edx ? : ~0u); - wrmsr(MSR_IA32_CPUID80000001_FEATURE_MASK, - opt_cpuid_mask_ext_ecx ? : ~0u, - opt_cpuid_mask_ext_edx ? : ~0u); - } - else { - printk(XENLOG_ERR "Cannot set CPU feature mask on = CPU#%d\n", - smp_processor_id()); + case 0x1a: + if ((c->x86_mask & 0x0f) <=3D 2) + break; + /* fall through */ + case 0x1e: case 0x1f: + case 0x25: case 0x2c: case 0x2e: case 0x2f: + wrmsr(MSR_INTEL_CPUID1_FEATURE_MASK, + opt_cpuid_mask_ecx, + opt_cpuid_mask_edx); + wrmsr(MSR_INTEL_CPUID80000001_FEATURE_MASK, + opt_cpuid_mask_ext_ecx, + opt_cpuid_mask_ext_edx); return; } + + printk(XENLOG_ERR "Cannot set CPU feature mask on CPU#%d\n", + smp_processor_id()); } =20 void __devinit early_intel_workaround(struct cpuinfo_x86 *c) --- 2010-06-15.orig/xen/include/asm-x86/msr-index.h 2010-06-15 = 09:34:25.000000000 +0200 +++ 2010-06-15/xen/include/asm-x86/msr-index.h 2010-06-15 09:35:39.0000000= 00 +0200 @@ -156,10 +156,10 @@ #define MSR_P6_EVNTSEL0 0x00000186 #define MSR_P6_EVNTSEL1 0x00000187 =20 -/* MSR for cpuid feature mask */ -#define MSR_IA32_CPUID_FEATURE_MASK1 0x00000478 -#define MSR_IA32_CPUID1_FEATURE_MASK 0x00000130 -#define MSR_IA32_CPUID80000001_FEATURE_MASK 0x00000131 +/* MSRs for Intel cpuid feature mask */ +#define MSR_INTEL_CPUID_FEATURE_MASK 0x00000478 +#define MSR_INTEL_CPUID1_FEATURE_MASK 0x00000130 +#define MSR_INTEL_CPUID80000001_FEATURE_MASK 0x00000131 =20 /* MSRs & bits used for VMX enabling */ #define MSR_IA32_VMX_BASIC 0x480 --=__Part93BEC5C8.0__= Content-Type: text/plain; name="x86-pv-cpuid-mask.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="x86-pv-cpuid-mask.patch" Invert initial values of the variables parsed into from the command=0Aline,= so that completely clearing out one or more of the four bit=0Afields is = possible.=0A=0AFurther, consolidate the command line parameter specificatio= ns into=0Aa single place.=0A=0AFinally, as per "Intel Virtualization = Technology FlexMigration=0AApplication Note" (http://www.intel.com/Assets/P= DF/manual/323850.pdf),=0Aalso handle family 6 model 0x1f.=0A=0AWhat = remains open is the question whether pv_cpuid() shouldn't also=0Aconsume = these masks.=0A=0ASigned-off-by: Jan Beulich =0A=0A---= 2010-06-15.orig/xen/arch/x86/cpu/amd.c 2010-06-15 09:34:25.000000000 = +0200=0A+++ 2010-06-15/xen/arch/x86/cpu/amd.c 2010-06-15 09:44:02.0000000= 00 +0200=0A@@ -31,14 +31,6 @@=0A static char opt_famrev[14];=0A string_para= m("cpuid_mask_cpu", opt_famrev);=0A =0A-/* Finer-grained CPUID feature = control. */=0A-static unsigned int opt_cpuid_mask_ecx, opt_cpuid_mask_edx;= =0A-integer_param("cpuid_mask_ecx", opt_cpuid_mask_ecx);=0A-integer_param("= cpuid_mask_edx", opt_cpuid_mask_edx);=0A-static unsigned int opt_cpuid_mask= _ext_ecx, opt_cpuid_mask_ext_edx;=0A-integer_param("cpuid_mask_ext_ecx", = opt_cpuid_mask_ext_ecx);=0A-integer_param("cpuid_mask_ext_edx", opt_cpuid_m= ask_ext_edx);=0A-=0A static inline void wrmsr_amd(unsigned int index, = unsigned int lo, =0A unsigned int hi)=0A {=0A@@ -59,7 +51,7 @@ = static inline void wrmsr_amd(unsigned in=0A *=0A * The processor = revision string parameter has precedene.=0A */=0A-static void __devinit = set_cpuidmask(struct cpuinfo_x86 *c)=0A+static void __devinit set_cpuidmask= (const struct cpuinfo_x86 *c)=0A {=0A static unsigned int feat_ecx, = feat_edx;=0A static unsigned int extfeat_ecx, extfeat_edx;=0A@@ -74,12 = +66,12 @@ static void __devinit set_cpuidmask(stru=0A ASSERT((status = =3D=3D not_parsed) && (smp_processor_id() =3D=3D 0));=0A status =3D = no_mask;=0A =0A- if (opt_cpuid_mask_ecx | opt_cpuid_mask_edx |=0A- = opt_cpuid_mask_ext_ecx | opt_cpuid_mask_ext_edx) {=0A- = feat_ecx =3D opt_cpuid_mask_ecx ? : ~0U;=0A- feat_edx =3D = opt_cpuid_mask_edx ? : ~0U;=0A- extfeat_ecx =3D opt_cpuid_mask_ext_= ecx ? : ~0U;=0A- extfeat_edx =3D opt_cpuid_mask_ext_edx ? : = ~0U;=0A+ if (~(opt_cpuid_mask_ecx & opt_cpuid_mask_edx &=0A+ = opt_cpuid_mask_ext_ecx & opt_cpuid_mask_ext_edx)) {=0A+ = feat_ecx =3D opt_cpuid_mask_ecx;=0A+ feat_edx =3D opt_cpuid_mask= _edx;=0A+ extfeat_ecx =3D opt_cpuid_mask_ext_ecx;=0A+ = extfeat_edx =3D opt_cpuid_mask_ext_edx;=0A } else if (*opt_famrev = =3D=3D '\0') {=0A return;=0A } else if (!strcmp(opt_famr= ev, "fam_0f_rev_c")) {=0A--- 2010-06-15.orig/xen/arch/x86/cpu/common.c = 2010-06-15 09:34:25.000000000 +0200=0A+++ 2010-06-15/xen/arch/x86/cpu/commo= n.c 2010-06-15 09:35:39.000000000 +0200=0A@@ -22,6 +22,15 @@ static = int cachesize_override __cpuinitd=0A static int disable_x86_fxsr __cpuinitd= ata;=0A static int disable_x86_serial_nr __cpuinitdata;=0A =0A+unsigned = int __devinitdata opt_cpuid_mask_ecx =3D ~0u;=0A+integer_param("cpuid_mask_= ecx", opt_cpuid_mask_ecx);=0A+unsigned int __devinitdata opt_cpuid_mask_edx= =3D ~0u;=0A+integer_param("cpuid_mask_edx", opt_cpuid_mask_edx);=0A+unsign= ed int __devinitdata opt_cpuid_mask_ext_ecx =3D ~0u;=0A+integer_param("cpui= d_mask_ext_ecx", opt_cpuid_mask_ext_ecx);=0A+unsigned int __devinitdata = opt_cpuid_mask_ext_edx =3D ~0u;=0A+integer_param("cpuid_mask_ext_edx", = opt_cpuid_mask_ext_edx);=0A+=0A struct cpu_dev * cpu_devs[X86_VENDOR_NUM] = =3D {};=0A =0A /*=0A--- 2010-06-15.orig/xen/arch/x86/cpu/cpu.h 2010-06-15 = 09:34:25.000000000 +0200=0A+++ 2010-06-15/xen/arch/x86/cpu/cpu.h = 2010-06-15 09:35:39.000000000 +0200=0A@@ -21,6 +21,9 @@ struct cpu_dev = {=0A =0A extern struct cpu_dev * cpu_devs [X86_VENDOR_NUM];=0A =0A+extern = unsigned int opt_cpuid_mask_ecx, opt_cpuid_mask_edx;=0A+extern unsigned = int opt_cpuid_mask_ext_ecx, opt_cpuid_mask_ext_edx;=0A+=0A extern int = get_model_name(struct cpuinfo_x86 *c);=0A extern void display_cacheinfo(str= uct cpuinfo_x86 *c);=0A =0A--- 2010-06-15.orig/xen/arch/x86/cpu/intel.c = 2010-06-11 11:41:35.000000000 +0200=0A+++ 2010-06-15/xen/arch/x86/cpu/intel= .c 2010-06-15 09:50:44.000000000 +0200=0A@@ -20,19 +20,6 @@=0A =0A = extern int trap_init_f00f_bug(void);=0A =0A-/*=0A- * opt_cpuid_mask_ecx/edx= : cpuid.1[ecx, edx] feature mask.=0A- * For example, E8400[Intel Core 2 = Duo Processor series] ecx =3D 0x0008E3FD, =0A- * edx =3D 0xBFEBFBFF when = executing CPUID.EAX =3D 1 normally. If you want to=0A- * 'rev down' to = E8400, you can set these values in these Xen boot parameters.=0A- = */=0A-static unsigned int opt_cpuid_mask_ecx, opt_cpuid_mask_edx;=0A-intege= r_param("cpuid_mask_ecx", opt_cpuid_mask_ecx);=0A-integer_param("cpuid_mask= _edx", opt_cpuid_mask_edx);=0A-static unsigned int opt_cpuid_mask_ext_ecx, = opt_cpuid_mask_ext_edx;=0A-integer_param("cpuid_mask_ext_ecx", opt_cpuid_ma= sk_ext_ecx);=0A-integer_param("cpuid_mask_ext_edx", opt_cpuid_mask_ext_edx)= ;=0A-=0A static int use_xsave =3D 1;=0A boolean_param("xsave", use_xsave);= =0A =0A@@ -43,46 +30,57 @@ boolean_param("xsave", use_xsave);=0A struct = movsl_mask movsl_mask __read_mostly;=0A #endif=0A =0A-static void = __devinit set_cpuidmask(struct cpuinfo_x86 *c)=0A+/*=0A+ * opt_cpuid_mask_e= cx/edx: cpuid.1[ecx, edx] feature mask.=0A+ * For example, E8400[Intel = Core 2 Duo Processor series] ecx =3D 0x0008E3FD,=0A+ * edx =3D 0xBFEBFBFF = when executing CPUID.EAX =3D 1 normally. If you want to=0A+ * 'rev down' = to E8400, you can set these values in these Xen boot parameters.=0A+ = */=0A+static void __devinit set_cpuidmask(const struct cpuinfo_x86 *c)=0A = {=0A- unsigned int model =3D c->x86_model;=0A-=0A- if (!(opt_cpuid_mas= k_ecx | opt_cpuid_mask_edx | =0A- opt_cpuid_mask_ext_ecx | = opt_cpuid_mask_ext_edx))=0A- return;=0A+ const char *extra = =3D "";=0A =0A- if (c->x86 !=3D 0x6) /* Only family 6 supports this = feature */=0A+ if (!~(opt_cpuid_mask_ecx & opt_cpuid_mask_edx &=0A+ = opt_cpuid_mask_ext_ecx & opt_cpuid_mask_ext_edx))=0A = return;=0A =0A- if ((model =3D=3D 0x1d) || ((model =3D=3D 0x17) && = (c->x86_mask >=3D 4))) {=0A- wrmsr(MSR_IA32_CPUID_FEATURE_MASK1,= =0A- opt_cpuid_mask_ecx ? : ~0u,=0A- = opt_cpuid_mask_edx ? : ~0u);=0A- }=0A+ /* Only family 6 supports = this feature */=0A+ switch ((c->x86 =3D=3D 6) * c->x86_model) {=0A+ = case 0x17:=0A+ if ((c->x86_mask & 0x0f) < 4)=0A+ = break;=0A+ /* fall through */=0A+ case 0x1d:=0A+ = wrmsr(MSR_INTEL_CPUID_FEATURE_MASK,=0A+ opt_cpuid_mask_ecx,= =0A+ opt_cpuid_mask_edx);=0A+ if (!~(opt_cpuid_ma= sk_ext_ecx & opt_cpuid_mask_ext_edx))=0A+ return;=0A+= extra =3D "extended ";=0A+ break;=0A /* =0A = * CPU supports this feature if the processor signature meets the following:= =0A * (CPUID.(EAX=3D01h):EAX) > 000106A2h, or=0A * (CPUID.(EAX=3D01h):EAX= ) =3D=3D 000106Exh, 0002065xh, 000206Cxh, 000206Exh, or 000206Fxh=0A *=0A = */=0A- else if (((model =3D=3D 0x1a) && (c->x86_mask > 2))=0A- = || model =3D=3D 0x1e=0A- || model =3D=3D 0x25 =0A- = || model =3D=3D 0x2c =0A- || model =3D=3D 0x2e =0A- = || model =3D=3D 0x2f) {=0A- wrmsr(MSR_IA32_CPUID1_FEATURE_MASK,= =0A- opt_cpuid_mask_ecx ? : ~0u,=0A- = opt_cpuid_mask_edx ? : ~0u);=0A- wrmsr(MSR_IA32_CPUID8000000= 1_FEATURE_MASK,=0A- opt_cpuid_mask_ext_ecx ? : ~0u,=0A- = opt_cpuid_mask_ext_edx ? : ~0u);=0A- }=0A- else {=0A- = printk(XENLOG_ERR "Cannot set CPU feature mask on CPU#%d\n",=0A- = smp_processor_id());=0A+ case 0x1a:=0A+ if = ((c->x86_mask & 0x0f) <=3D 2)=0A+ break;=0A+ = /* fall through */=0A+ case 0x1e: case 0x1f:=0A+ case 0x25: case = 0x2c: case 0x2e: case 0x2f:=0A+ wrmsr(MSR_INTEL_CPUID1_FEATURE_MASK= ,=0A+ opt_cpuid_mask_ecx,=0A+ opt_cpuid_mas= k_edx);=0A+ wrmsr(MSR_INTEL_CPUID80000001_FEATURE_MASK,=0A+ = opt_cpuid_mask_ext_ecx,=0A+ opt_cpuid_mask_ext_ed= x);=0A return;=0A }=0A+=0A+ printk(XENLOG_ERR "Cannot = set CPU feature mask on CPU#%d\n",=0A+ smp_processor_id());=0A = }=0A =0A void __devinit early_intel_workaround(struct cpuinfo_x86 = *c)=0A--- 2010-06-15.orig/xen/include/asm-x86/msr-index.h 2010-06-15 = 09:34:25.000000000 +0200=0A+++ 2010-06-15/xen/include/asm-x86/msr-index.h = 2010-06-15 09:35:39.000000000 +0200=0A@@ -156,10 +156,10 @@=0A #define = MSR_P6_EVNTSEL0 0x00000186=0A #define MSR_P6_EVNTSEL1 = 0x00000187=0A =0A-/* MSR for cpuid feature mask */=0A-#define = MSR_IA32_CPUID_FEATURE_MASK1 0x00000478=0A-#define MSR_IA32_CPUID1_FEATU= RE_MASK 0x00000130=0A-#define MSR_IA32_CPUID80000001_FEATURE_MASK = 0x00000131=0A+/* MSRs for Intel cpuid feature mask */=0A+#define MSR_INTEL_= CPUID_FEATURE_MASK 0x00000478=0A+#define MSR_INTEL_CPUID1_FEATURE_MASK= 0x00000130=0A+#define MSR_INTEL_CPUID80000001_FEATURE_MASK = 0x00000131=0A =0A /* MSRs & bits used for VMX enabling */=0A #define = MSR_IA32_VMX_BASIC 0x480=0A --=__Part93BEC5C8.0__= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --=__Part93BEC5C8.0__=--