From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH] KVM: VMX: Add instruction rdtscp support for guest Date: Wed, 09 Dec 2009 11:54:46 +0200 Message-ID: <4B1F73E6.2040607@redhat.com> References: <1260349884-23512-1-git-send-email-sheng@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Marcelo Tosatti , kvm@vger.kernel.org To: Sheng Yang Return-path: Received: from mx1.redhat.com ([209.132.183.28]:36303 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754153AbZLIJyn (ORCPT ); Wed, 9 Dec 2009 04:54:43 -0500 In-Reply-To: <1260349884-23512-1-git-send-email-sheng@linux.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: On 12/09/2009 11:11 AM, Sheng Yang wrote: > Before enabling, execution of "rdtscp" in guest would result in #UD. > > Signed-off-by: Sheng Yang > --- > arch/x86/include/asm/vmx.h | 1 + > arch/x86/kvm/vmx.c | 3 ++- > 2 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/arch/x86/include/asm/vmx.h b/arch/x86/include/asm/vmx.h > index 2b49454..8c39320 100644 > --- a/arch/x86/include/asm/vmx.h > +++ b/arch/x86/include/asm/vmx.h > @@ -53,6 +53,7 @@ > */ > #define SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES 0x00000001 > #define SECONDARY_EXEC_ENABLE_EPT 0x00000002 > +#define SECONDARY_EXEC_RDTSCP 0x00000008 > #define SECONDARY_EXEC_ENABLE_VPID 0x00000020 > #define SECONDARY_EXEC_WBINVD_EXITING 0x00000040 > #define SECONDARY_EXEC_UNRESTRICTED_GUEST 0x00000080 > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index 9a0a2cf..e1a2ed2 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -1243,7 +1243,8 @@ static __init int setup_vmcs_config(struct vmcs_config *vmcs_conf) > SECONDARY_EXEC_ENABLE_VPID | > SECONDARY_EXEC_ENABLE_EPT | > SECONDARY_EXEC_UNRESTRICTED_GUEST | > - SECONDARY_EXEC_PAUSE_LOOP_EXITING; > + SECONDARY_EXEC_PAUSE_LOOP_EXITING | > + SECONDARY_EXEC_RDTSCP; > if (adjust_vmx_controls(min2, opt2, > MSR_IA32_VMX_PROCBASED_CTLS2, > &_cpu_based_2nd_exec_control)< 0) > Need to save/restore MSR_TSC_AUX (but only if rdtscp in cpuid), support MSR_TSC_AUX in get/save, and expose via GET_SUPPORTED_CPUID (only on processors which support the feature). -- Do not meddle in the internals of kernels, for they are subtle and quick to panic.