• S
    KVM: x86: Dynamically allocate per-vCPU emulation context · c9b8b07c
    Sean Christopherson 提交于
    Allocate the emulation context instead of embedding it in struct
    kvm_vcpu_arch.
    
    Dynamic allocation provides several benefits:
    
      - Shrinks the size x86 vcpus by ~2.5k bytes, dropping them back below
        the PAGE_ALLOC_COSTLY_ORDER threshold.
      - Allows for dropping the include of kvm_emulate.h from asm/kvm_host.h
        and moving kvm_emulate.h into KVM's private directory.
      - Allows a reducing KVM's attack surface by shrinking the amount of
        vCPU data that is exposed to usercopy.
      - Allows a future patch to disable the emulator entirely, which may or
        may not be a realistic endeavor.
    
    Mark the entire struct as valid for usercopy to maintain existing
    behavior with respect to hardened usercopy.  Future patches can shrink
    the usercopy range to cover only what is necessary.
    Signed-off-by: NSean Christopherson <sean.j.christopherson@intel.com>
    Reviewed-by: NVitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    c9b8b07c
kvm_host.h 50.4 KB