From ec48ab815b556a8f0a2ba9c5287b13fd4cf39607 Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Fri, 2 Feb 2007 16:07:13 +0000 Subject: Hide RDTSCP feature flag from PV guests. Linux 2.6.19 (x86-64) makes use of this feature if available, but Xen (validly) fails the attempt to write the respective MSR. Hence the feature must be hidden from PV guests. Signed-off-by: Jan Beulich --- xen/arch/x86/traps.c | 5 +++++ xen/include/asm-x86/cpufeature.h | 1 + 2 files changed, 6 insertions(+) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 16b1e48ca8..dfa22bce04 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -597,6 +597,11 @@ static int emulate_forced_invalid_op(struct cpu_user_regs *regs) if ( !IS_PRIV(current->domain) ) clear_bit(X86_FEATURE_MTRR, &d); } + else if ( regs->eax == 0x80000001 ) + { + /* Modify Feature Information. */ + clear_bit(X86_FEATURE_RDTSCP % 32, &d); + } else { (void)cpuid_hypervisor_leaves(regs->eax, &a, &b, &c, &d); diff --git a/xen/include/asm-x86/cpufeature.h b/xen/include/asm-x86/cpufeature.h index a092a83ad5..a6f2f757bc 100644 --- a/xen/include/asm-x86/cpufeature.h +++ b/xen/include/asm-x86/cpufeature.h @@ -49,6 +49,7 @@ #define X86_FEATURE_MP (1*32+19) /* MP Capable. */ #define X86_FEATURE_NX (1*32+20) /* Execute Disable */ #define X86_FEATURE_MMXEXT (1*32+22) /* AMD MMX extensions */ +#define X86_FEATURE_RDTSCP (1*32+27) /* RDTSCP */ #define X86_FEATURE_LM (1*32+29) /* Long Mode (x86-64) */ #define X86_FEATURE_3DNOWEXT (1*32+30) /* AMD 3DNow! extensions */ #define X86_FEATURE_3DNOW (1*32+31) /* 3DNow! */ -- cgit v1.2.3