[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <cover.1699383993.git.isaku.yamahata@intel.com>
Date: Tue, 7 Nov 2023 11:22:32 -0800
From: isaku.yamahata@...el.com
To: kvm@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: isaku.yamahata@...el.com, isaku.yamahata@...il.com,
Paolo Bonzini <pbonzini@...hat.com>, erdemaktas@...gle.com,
Sean Christopherson <seanjc@...gle.com>,
Vishal Annapurve <vannapurve@...gle.com>
Subject: [PATCH 0/2] KVM: X86: Make bus lock frequency for vapic timer configurable
From: Isaku Yamahata <isaku.yamahata@...el.com>
Add KVM_CAP_X86_BUS_FREQUENCY_CONTROL capability to configure the core
crystal clock (or processor's bus clock) for APIC timer emulation. Allow
KVM_ENABLE_CAPABILITY(KVM_CAP_X86_BUS_FREUQNCY_CONTROL) to set the
frequency. When using this capability, the user space VMM should configure
CPUID[0x15] to advertise the frequency.
TDX virtualizes CPUID[0x15] for the core crystal clock to be 25MHz. The
x86 KVM hardcodes its freuqncy for APIC timer to be 1GHz. This mismatch
causes the vAPIC timer to fire earlier than the guest expects. [1] The KVM
APIC timer emulation uses hrtimer, whose unit is nanosecond.
There are options to reconcile the mismatch. 1) Make apic bus clock frequency
configurable (this patch). 2) TDX KVM code adjusts TMICT value. This is hacky
and it results in losing MSB bits from 32 bit width to 30 bit width. 3). Make
the guest kernel use tsc deadline timer instead of acpi oneshot/periodic timer.
This is guest kernel choice. It's out of control of VMM.
[1] https://lore.kernel.org/lkml/20231006011255.4163884-1-vannapurve@google.com/
Isaku Yamahata (2):
KVM: x86: Make the hardcoded APIC bus frequency vm variable
KVM: X86: Add a capability to configure bus frequency for APIC timer
arch/x86/include/asm/kvm_host.h | 2 ++
arch/x86/kvm/hyperv.c | 2 +-
arch/x86/kvm/lapic.c | 6 ++++--
arch/x86/kvm/lapic.h | 4 ++--
arch/x86/kvm/x86.c | 16 ++++++++++++++++
include/uapi/linux/kvm.h | 1 +
6 files changed, 26 insertions(+), 5 deletions(-)
--
2.25.1
Powered by blists - more mailing lists