From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: KVM: x86: expose invariant tsc cpuid bit (v2) Date: Tue, 29 Apr 2014 15:12:59 +0200 Message-ID: <535FA55B.1060300@redhat.com> References: <20140425221524.GA25544@amt.cnet> <20140427013023.GA6673@amt.cnet> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit To: Marcelo Tosatti , kvm-devel Return-path: Received: from mx1.redhat.com ([209.132.183.28]:29976 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751550AbaD2NNC (ORCPT ); Tue, 29 Apr 2014 09:13:02 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s3TDD1lb001917 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 29 Apr 2014 09:13:02 -0400 In-Reply-To: <20140427013023.GA6673@amt.cnet> Sender: kvm-owner@vger.kernel.org List-ID: Il 27/04/2014 03:30, Marcelo Tosatti ha scritto: > > Invariant TSC is a property of TSC, no additional > support code necessary. > > Signed-off-by: Marcelo Tosatti > > diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c > index f47a104..333b88d 100644 > --- a/arch/x86/kvm/cpuid.c > +++ b/arch/x86/kvm/cpuid.c > @@ -495,6 +495,13 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, > entry->ecx &= kvm_supported_word6_x86_features; > cpuid_mask(&entry->ecx, 6); > break; > + case 0x80000007: /* Advanced power management */ > + /* invariant TSC is CPUID.80000007H:EDX[8] */ > + entry->edx &= (1 << 8); > + /* mask against host */ > + entry->edx &= boot_cpu_data.x86_power; > + entry->eax = entry->ebx = entry->ecx = 0; > + break; > case 0x80000008: { > unsigned g_phys_as = (entry->eax >> 16) & 0xff; > unsigned virt_as = max((entry->eax >> 8) & 0xff, 48U); > @@ -525,7 +532,6 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, > case 3: /* Processor serial number */ > case 5: /* MONITOR/MWAIT */ > case 6: /* Thermal management */ > - case 0x80000007: /* Advanced power management */ > case 0xC0000002: > case 0xC0000003: > case 0xC0000004: > Applying to kvm/queue, thanks. Paolo