Message ID | d815921fff4c616c8b05bff0fb9377a171c8633b.1711035400.git.reinette.chatre@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: x86: Make bus clock frequency for vAPIC timer configurable | expand |
On Thu, 2024-03-21 at 09:37 -0700, Reinette Chatre wrote: > From: Isaku Yamahata <isaku.yamahata@intel.com> > > Remove APIC_BUS_FREQUENCY and calculate it based on nanoseconds per APIC > bus cycle. APIC_BUS_FREQUENCY is used only for HV_X64_MSR_APIC_FREQUENCY. > The MSR is not frequently read, calculate it every time. > > There are two constants related to the APIC bus frequency: > APIC_BUS_FREQUENCY and APIC_BUS_CYCLE_NS. > Only one value is required because one can be calculated from the other: > APIC_BUS_CYCLES_NS = 1000 * 1000 * 1000 / APIC_BUS_FREQUENCY. > > Remove APIC_BUS_FREQUENCY and instead calculate it when needed. > This prepares for support of configurable APIC bus frequency by > requiring to change only a single variable. > > Suggested-by: Maxim Levitsky <maximlevitsky@gmail.com> > Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com> > Reviewed-by: Maxim Levitsky <maximlevitsky@gmail.com> > Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com> > [reinette: rework changelog] > Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Reviewed-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c index 8a47f8541eab..1030701db967 100644 --- a/arch/x86/kvm/hyperv.c +++ b/arch/x86/kvm/hyperv.c @@ -1737,7 +1737,7 @@ static int kvm_hv_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata, data = (u64)vcpu->arch.virtual_tsc_khz * 1000; break; case HV_X64_MSR_APIC_FREQUENCY: - data = APIC_BUS_FREQUENCY; + data = div64_u64(1000000000ULL, APIC_BUS_CYCLE_NS); break; default: kvm_pr_unimpl_rdmsr(vcpu, msr); diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h index 0a0ea4b5dd8c..a20cb006b6c8 100644 --- a/arch/x86/kvm/lapic.h +++ b/arch/x86/kvm/lapic.h @@ -17,7 +17,6 @@ #define APIC_DEST_MASK 0x800 #define APIC_BUS_CYCLE_NS 1 -#define APIC_BUS_FREQUENCY (1000000000ULL / APIC_BUS_CYCLE_NS) #define APIC_BROADCAST 0xFF #define X2APIC_BROADCAST 0xFFFFFFFFul