mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 13:22:23 +00:00
KVM: VMX: Clean cr3/pgd handling in vmx_load_mmu_pgd()
Rename @cr3 to @pgd in vmx_load_mmu_pgd() to reflect that it will be loaded into vmcs.EPT_POINTER and not vmcs.GUEST_CR3 when EPT is enabled. Similarly, load guest_cr3 with @pgd if and only if EPT is disabled. This fixes one of the last, if not _the_ last, cases in KVM where a variable that is not strictly a cr3 value uses "cr3" instead of "pgd". Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Message-Id: <20200320212833.3507-38-sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
be01e8e2c6
commit
be100ef136
@ -3034,16 +3034,15 @@ u64 construct_eptp(struct kvm_vcpu *vcpu, unsigned long root_hpa)
|
||||
return eptp;
|
||||
}
|
||||
|
||||
void vmx_load_mmu_pgd(struct kvm_vcpu *vcpu, unsigned long cr3)
|
||||
void vmx_load_mmu_pgd(struct kvm_vcpu *vcpu, unsigned long pgd)
|
||||
{
|
||||
struct kvm *kvm = vcpu->kvm;
|
||||
bool update_guest_cr3 = true;
|
||||
unsigned long guest_cr3;
|
||||
u64 eptp;
|
||||
|
||||
guest_cr3 = cr3;
|
||||
if (enable_ept) {
|
||||
eptp = construct_eptp(vcpu, cr3);
|
||||
eptp = construct_eptp(vcpu, pgd);
|
||||
vmcs_write64(EPT_POINTER, eptp);
|
||||
|
||||
if (kvm_x86_ops.tlb_remote_flush) {
|
||||
@ -3064,6 +3063,8 @@ void vmx_load_mmu_pgd(struct kvm_vcpu *vcpu, unsigned long cr3)
|
||||
else /* vmcs01.GUEST_CR3 is already up-to-date. */
|
||||
update_guest_cr3 = false;
|
||||
ept_load_pdptrs(vcpu);
|
||||
} else {
|
||||
guest_cr3 = pgd;
|
||||
}
|
||||
|
||||
if (update_guest_cr3)
|
||||
|
Loading…
Reference in New Issue
Block a user