Commit 40e49c4f authored by Lai Jiangshan's avatar Lai Jiangshan Committed by Paolo Bonzini
Browse files

KVM: SVM: Track dirtiness of PDPTRs even if NPT is disabled



Use the same logic to handle the availability of VCPU_EXREG_PDPTR
as VMX, also removing a branch in svm_vcpu_run().

Signed-off-by: default avatarLai Jiangshan <laijs@linux.alibaba.com>
Message-Id: <20211108124407.12187-4-jiangshanlai@gmail.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent c0d6956e
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -1598,9 +1598,15 @@ static void svm_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags)

static void svm_cache_reg(struct kvm_vcpu *vcpu, enum kvm_reg reg)
{
	kvm_register_mark_available(vcpu, reg);

	switch (reg) {
	case VCPU_EXREG_PDPTR:
		BUG_ON(!npt_enabled);
		/*
		 * When !npt_enabled, mmu->pdptrs[] is already available since
		 * it is always updated per SDM when moving to CRs.
		 */
		if (npt_enabled)
			load_pdptrs(vcpu, vcpu->arch.walk_mmu, kvm_read_cr3(vcpu));
		break;
	default:
@@ -3974,7 +3980,6 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu)
		vcpu->arch.apf.host_apf_flags =
			kvm_read_and_reset_apf_flags();

	if (npt_enabled)
	kvm_register_clear_available(vcpu, VCPU_EXREG_PDPTR);

	/*