KVM: x86: Pull CPUID capabilities from boot_cpu_data only as needed
authorSean Christopherson <seanjc@google.com>
Thu, 28 Nov 2024 01:34:20 +0000 (17:34 -0800)
committerSean Christopherson <seanjc@google.com>
Wed, 18 Dec 2024 22:20:19 +0000 (14:20 -0800)
commit3fd55b52279531c6211cb1037e929ea890fbeb59
tree9e483cc2a1448245c422a9cb4a5acab99d859fc6
parent75c489e12d4b90d8aa5ffb34c3c907ef717fe38e
KVM: x86: Pull CPUID capabilities from boot_cpu_data only as needed

Don't memcpy() all of boot_cpu_data.x86_capability, and instead explicitly
fill each kvm_cpu_cap_init leaf during kvm_cpu_cap_init().  While clever,
copying all kernel capabilities risks over-reporting KVM capabilities,
e.g. if KVM added support in __do_cpuid_func(), but neglected to init the
supported set of capabilities.

Note, explicitly grabbing leafs deliberately keeps Linux-defined leafs as
0!  KVM should never advertise Linux-defined leafs; any relevant features
that are "real", but scattered, must be gathered in their correct hardware-
defined leaf.

Link: https://lore.kernel.org/r/20241128013424.4096668-54-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/cpuid.c