From patchwork Tue Dec 15 04:08:38 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zachary Amsden X-Patchwork-Id: 67473 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id nBF4QSLl016846 for ; Tue, 15 Dec 2009 04:26:30 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759250AbZLOEKA (ORCPT ); Mon, 14 Dec 2009 23:10:00 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932355AbZLOEHW (ORCPT ); Mon, 14 Dec 2009 23:07:22 -0500 Received: from mx1.redhat.com ([209.132.183.28]:35806 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758537AbZLOEHS (ORCPT ); Mon, 14 Dec 2009 23:07:18 -0500 Received: from int-mx08.intmail.prod.int.phx2.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id nBF47GLk015154 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 14 Dec 2009 23:07:16 -0500 Received: from localhost.localdomain (vpn-9-100.rdu.redhat.com [10.11.9.100]) by int-mx08.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id nBF46m95031119; Mon, 14 Dec 2009 23:07:14 -0500 From: Zachary Amsden To: kvm@vger.kernel.org Cc: Zachary Amsden , Avi Kivity , Marcelo Tosatti , Joerg Roedel , linux-kernel@vger.kernel.org, Dor Laor Subject: [PATCH RFC: kvm tsc virtualization 11/20] Use highest TSC frequency as reference clock Date: Mon, 14 Dec 2009 18:08:38 -1000 Message-Id: <1260850127-9766-12-git-send-email-zamsden@redhat.com> In-Reply-To: <1260850127-9766-11-git-send-email-zamsden@redhat.com> References: <1260850127-9766-1-git-send-email-zamsden@redhat.com> <1260850127-9766-2-git-send-email-zamsden@redhat.com> <1260850127-9766-3-git-send-email-zamsden@redhat.com> <1260850127-9766-4-git-send-email-zamsden@redhat.com> <1260850127-9766-5-git-send-email-zamsden@redhat.com> <1260850127-9766-6-git-send-email-zamsden@redhat.com> <1260850127-9766-7-git-send-email-zamsden@redhat.com> <1260850127-9766-8-git-send-email-zamsden@redhat.com> <1260850127-9766-9-git-send-email-zamsden@redhat.com> <1260850127-9766-10-git-send-email-zamsden@redhat.com> <1260850127-9766-11-git-send-email-zamsden@redhat.com> Organization: Frobozz Magic Timekeeping Company X-Scanned-By: MIMEDefang 2.67 on 10.5.11.21 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 520ea6a..3c4266f 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3701,7 +3701,15 @@ static void kvm_timer_init(void) * can change at any time. */ register_cpu_notifier(&kvm_x86_cpu_notifier); + ref_tsc_khz = tsc_khz; if (!boot_cpu_has(X86_FEATURE_CONSTANT_TSC)) { +#ifdef CONFIG_CPU_FREQ + struct cpufreq_policy policy; + + cpufreq_get_policy(&policy, get_cpu()); + ref_tsc_khz = policy.cpuinfo.max_freq; + put_cpu(); +#endif cpufreq_register_notifier(&kvmclock_cpufreq_notifier_block, CPUFREQ_TRANSITION_NOTIFIER); for_each_online_cpu(cpu) { @@ -3718,7 +3726,6 @@ static void kvm_timer_init(void) per_cpu(cpu_tsc_khz, cpu) = tsc_khz; } tsc_base_cpu = get_cpu(); - ref_tsc_khz = per_cpu(cpu_tsc_khz, tsc_base_cpu); resync(NULL); put_cpu(); }