[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 0/3] x86-kvm: Fix Mac guest timekeeping by exposi
[Qemu-devel] [PATCH v2 0/3] x86-kvm: Fix Mac guest timekeeping by exposing TSC frequency in CPUID
Fri, 20 Jan 2017 15:11:33 +0100
Darwin/OS X/macOS for x86-64 uses the TSC for timekeeping; it normally
calibrates this by querying various clock frequency scaling MSRs. Details
depend on the exact CPU model detected. The local APIC timer frequency is
extracted from (EFI) firmware. Virtualisation environments including Qemu/KVM
don't expose those MSRs to guests, and in any case the host and guest CPUs'
MSRs may not match up. To solve this, the xnu kernel queries CPUID leaf
0x40000010 for the TSC and APIC timers if leaf 0x40000000 suggests that this
leaf exists, which is the case when running inside VMWare (Fusion). This patch
series replicates the behaviour of these CPUID leaves for Qemu/KVM via a new
x86 CPU option, "vmware-cpuid-freq."
The option is activated by default on 2.9 and newer pc (PIIX and Q35) machine
variants, if the TSC is stable and known (invtsc or user-specified).
v1 -> v2
* The v1 thread was "[PATCH] x86-KVM: Supply TSC and APIC clock rates to guest
* The option has been renamed as suggested in the v1 discussion.
* It now checks that either invtsc or a user-specified TSC clock rate are
active before activating leaf 0x40000010.
* CPUID leaf 0x40000000 exposed by KVM will only reference 0x40000010 if all
preconditions are met and the functionality is actually active.
* No more error message if preconditions are not met.
* cpuid_data.cpuid.nent update/cpuid_find_entry bug fixed.
* 2 extra patches included, one for setting up PC machine version 2.8/2.9
compatibility configurations, the second for enabling the new option in version
2.9+ PIIX/q35 configurations by default, while leaving it disabled for 2.8 or
Phil Dennis-Jordan (3):
x86-KVM: Supply TSC and APIC clock rates to guest like VMWare
pc: Add 2.9 machine type
pc: Enable vmware-cpuid-freq CPU option for 2.9+ machine types
hw/i386/pc_piix.c | 13 ++++++++++++-
hw/i386/pc_q35.c | 12 +++++++++++-
include/hw/i386/pc.h | 6 ++++++
target/i386/cpu.c | 1 +
target/i386/cpu.h | 4 ++++
target/i386/kvm.c | 36 ++++++++++++++++++++++++++++++------
6 files changed, 64 insertions(+), 8 deletions(-)
2.3.2 (Apple Git-55)
- [Qemu-devel] [PATCH v2 0/3] x86-kvm: Fix Mac guest timekeeping by exposing TSC frequency in CPUID,
Phil Dennis-Jordan <=