Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2113634 authored by Sean Christopherson's avatar Sean Christopherson Committed by Paolo Bonzini
Browse files

KVM: x86/mmu: Split remote_flush+zap case out of kvm_mmu_flush_or_zap()



...and into a separate helper, kvm_mmu_remote_flush_or_zap(), that does
not require a vcpu so that the code can be (re)used by
kvm_mmu_invalidate_zap_pages_in_memslot().

Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 85875a13
Loading
Loading
Loading
Loading
+16 −6
Original line number Original line Diff line number Diff line
@@ -2240,18 +2240,28 @@ static bool __kvm_sync_page(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp,
	return true;
	return true;
}
}


static bool kvm_mmu_remote_flush_or_zap(struct kvm *kvm,
					struct list_head *invalid_list,
					bool remote_flush)
{
	if (!remote_flush && !list_empty(invalid_list))
		return false;

	if (!list_empty(invalid_list))
		kvm_mmu_commit_zap_page(kvm, invalid_list);
	else
		kvm_flush_remote_tlbs(kvm);
	return true;
}

static void kvm_mmu_flush_or_zap(struct kvm_vcpu *vcpu,
static void kvm_mmu_flush_or_zap(struct kvm_vcpu *vcpu,
				 struct list_head *invalid_list,
				 struct list_head *invalid_list,
				 bool remote_flush, bool local_flush)
				 bool remote_flush, bool local_flush)
{
{
	if (!list_empty(invalid_list)) {
	if (kvm_mmu_remote_flush_or_zap(vcpu->kvm, invalid_list, remote_flush))
		kvm_mmu_commit_zap_page(vcpu->kvm, invalid_list);
		return;
		return;
	}


	if (remote_flush)
	if (local_flush)
		kvm_flush_remote_tlbs(vcpu->kvm);
	else if (local_flush)
		kvm_make_request(KVM_REQ_TLB_FLUSH, vcpu);
		kvm_make_request(KVM_REQ_TLB_FLUSH, vcpu);
}
}