• Vitaly Kuznetsov's avatar
    KVM: x86: allocate vcpu->arch.cpuid_entries dynamically · 255cbecf
    Vitaly Kuznetsov authored
    The current limit for guest CPUID leaves (KVM_MAX_CPUID_ENTRIES, 80)
    is reported to be insufficient but before we bump it let's switch to
    allocating vcpu->arch.cpuid_entries[] array dynamically. Currently,
    'struct kvm_cpuid_entry2' is 40 bytes so vcpu->arch.cpuid_entries is
    3200 bytes which accounts for 1/4 of the whole 'struct kvm_vcpu_arch'
    but having it pre-allocated (for all vCPUs which we also pre-allocate)
    gives us no real benefits.
    
    Another plus of the dynamic allocation is that we now do kvm_check_cpuid()
    check before we assign anything to vcpu->arch.cpuid_nent/cpuid_entries so
    no changes are made in case the check fails.
    
    Opportunistically remove unneeded 'out' labels from
    kvm_vcpu_ioctl_set_cpuid()/kvm_vcpu_ioctl_set_cpuid2() and return
    directly whenever possible.
    Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20201001130541.1398392-3-vkuznets@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: default avatarMaxim Levitsky <mlevitsk@redhat.com>
    255cbecf
x86.c 292 KB