All of lore.kernel.org
 help / color / mirror / Atom feed
From: Prarit Bhargava <prarit@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>, linux-kernel@vger.kernel.org
Cc: "Radim Krčmář" <rkrcmar@redhat.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Ingo Molnar" <mingo@redhat.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	x86@kernel.org, "Len Brown" <len.brown@intel.com>,
	"Peter Zijlstra (Intel)" <peterz@infradead.org>,
	"Borislav Petkov" <bp@suse.de>,
	"Adrian Hunter" <adrian.hunter@intel.com>,
	"Christopher S. Hall" <christopher.s.hall@intel.com>,
	"David Woodhouse" <dwmw2@infradead.org>,
	kvm@vger.kernel.org
Subject: Re: [PATCH] x86, clock: Fix kvm guest tsc initialization
Date: Thu, 08 Sep 2016 09:46:29 -0400	[thread overview]
Message-ID: <57D16BB5.5050501@redhat.com> (raw)
In-Reply-To: <67c4faca-5c32-85de-10c2-59eff3c9fb87@redhat.com>



On 09/08/2016 09:33 AM, Paolo Bonzini wrote:
> 
> 
> On 08/09/2016 15:07, Prarit Bhargava wrote:
>> When booting a kvm guest on AMD with the latest kernel the following
>> messages are displayed in the boot log:
>>
>>  tsc: Unable to calibrate against PIT
>>  tsc: HPET/PMTIMER calibration failed
>>
>> aa297292d708 ("x86/tsc: Enumerate SKL cpu_khz and tsc_khz via CPUID")
>> introduced a change to account for a difference in cpu and tsc frequencies for
>> Intel SKL processors. Before this change the native tsc set
>> x86_platform.calibrate_tsc to native_calibrate_tsc() which is a hardware
>> calibration of the tsc, and in tsc_init() executed
>>
>> 	tsc_khz = x86_platform.calibrate_tsc();
>> 	cpu_khz = tsc_khz;
>>
>> The kvm code changed x86_platform.calibrate_tsc to kvm_get_tsc_khz() and
>> executed the same tsc_init() function.  This meant that KVM guests did not
>> execute the native hardware calibration function.
>>
>> After aa297292d708, there are separate native calibrations for cpu_khz and
>> tsc_khz.  The code sets x86_platform.calibrate_tsc to native_calibrate_tsc()
>> which is now an Intel specific calibration function , and
>> x86_platform.calibrate_cpu to native_calibrate_cpu() which is the "old"
>> native_calibrate_tsc() function (ie, the native hardware calibration
>> function). [...]
>>
>> The kvm code should not call the hardware initialization in
>> native_calibrate_cpu(), as it isn't applicable for kvm and it didn't do that
>> prior to aa297292d708.  Setting x86_platform.calibrate_cpu to NULL is not
>> appropriate as cpu_khz_from_cpuid() must be called to get the correct
>> value of cpu_khz on Intel KVM guests.
>>
>> This patch resolves this issue by setting x86_platform.calibrate_cpu to
>> cpu_khz_from_cpuid() for KVM guests, which allows Intel KVM guests to get
>> the right cpu frequency.
> 
> KVM guests don't have that CPUID leaf at all.  kvm_get_tsc_khz can
> double as x86_platform.calibrate_cpu too for KVM guests, restoring the
> behavior prior to aa297292d708.

Thanks Paolo -- v2 coming shortly.

P.

  reply	other threads:[~2016-09-08 13:46 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-08 13:07 [PATCH] x86, clock: Fix kvm guest tsc initialization Prarit Bhargava
2016-09-08 13:33 ` Paolo Bonzini
2016-09-08 13:46   ` Prarit Bhargava [this message]
2016-09-08 14:15   ` [PATCH v2] " Prarit Bhargava
2016-09-08 14:42     ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=57D16BB5.5050501@redhat.com \
    --to=prarit@redhat.com \
    --cc=adrian.hunter@intel.com \
    --cc=bp@suse.de \
    --cc=christopher.s.hall@intel.com \
    --cc=dwmw2@infradead.org \
    --cc=hpa@zytor.com \
    --cc=kvm@vger.kernel.org \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rkrcmar@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.