• Peter Xu's avatar
    KVM: X86: Don't track dirty for KVM_SET_[TSS_ADDR|IDENTITY_MAP_ADDR] · ff5a983c
    Peter Xu authored
    Originally, we have three code paths that can dirty a page without
    vcpu context for X86:
    
      - init_rmode_identity_map
      - init_rmode_tss
      - kvmgt_rw_gpa
    
    init_rmode_identity_map and init_rmode_tss will be setup on
    destination VM no matter what (and the guest cannot even see them), so
    it does not make sense to track them at all.
    
    To do this, allow __x86_set_memory_region() to return the userspace
    address that just allocated to the caller.  Then in both of the
    functions we directly write to the userspace address instead of
    calling kvm_write_*() APIs.
    
    Another trivial change is that we don't need to explicitly clear the
    identity page table root in init_rmode_identity_map() because no
    matter what we'll write to the whole page with 4M huge page entries.
    Suggested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: default avatarPeter Xu <peterx@redhat.com>
    Message-Id: <20201001012044.5151-4-peterx@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    ff5a983c
vmx.c 222 KB