]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: x86: Return the VM's configured APIC bus frequency when queried
authorSean Christopherson <seanjc@google.com>
Fri, 22 May 2026 17:35:25 +0000 (10:35 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Sat, 23 May 2026 08:07:29 +0000 (10:07 +0200)
When KVM_CAP_X86_APIC_BUS_CYCLES_NS is queried on a specific VM, return the
VM's configured APIC bus frequency, not KVM's default.  Aside from the fact
that returning the default frequency is blatantly wrong if userspace has
changed the frequency, returning the configured frequency means userspace
can blindly trust the result, e.g. when filling PV CPUID information that
communicates the APIC bus frequency to the guest.

Fixes: 6fef518594bc ("KVM: x86: Add a capability to configure bus frequency for APIC timer")
Reported-by: David Woodhouse <dwmw2@infradead.org>
Closes: https://lore.kernel.org/all/ab84153e33fbe7c25667f595c56b310d4d5a93ef.camel@infradead.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-ID: <20260522173526.3539407-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/x86.c

index 0a1b63c63d1a9cdf6c2f1748ebf8c1e5f28f8bb6..c1a72d749084f2ab8c03e8853d8dd1835cce5fc5 100644 (file)
@@ -4876,7 +4876,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
                r = tdp_enabled;
                break;
        case KVM_CAP_X86_APIC_BUS_CYCLES_NS:
-               r = APIC_BUS_CYCLE_NS_DEFAULT;
+               r = kvm ? kvm->arch.apic_bus_cycle_ns : APIC_BUS_CYCLE_NS_DEFAULT;
                break;
        case KVM_CAP_EXIT_HYPERCALL:
                r = KVM_EXIT_HYPERCALL_VALID_MASK;