Commit 6a3d7049 authored by Sean Christopherson's avatar Sean Christopherson
Browse files

KVM: x86/mmu: Use kvm_x86_call() instead of manual static_call()



Use KVM's preferred kvm_x86_call() wrapper to invoke static calls related
to mirror page tables.

No functional change intended.

Fixes: 77ac7079 ("KVM: x86/tdp_mmu: Propagate building mirror page tables")
Fixes: 94faba89 ("KVM: x86/tdp_mmu: Propagate tearing down mirror page tables")
Reviewed-by: default avatarKai Huang <kai.huang@intel.com>
Link: https://lore.kernel.org/r/20250331182703.725214-1-seanjc@google.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent 11d45175
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -378,7 +378,7 @@ static void remove_external_spte(struct kvm *kvm, gfn_t gfn, u64 old_spte,
	/* Zapping leaf spte is allowed only when write lock is held. */
	lockdep_assert_held_write(&kvm->mmu_lock);
	/* Because write lock is held, operation should success. */
	ret = static_call(kvm_x86_remove_external_spte)(kvm, gfn, level, old_pfn);
	ret = kvm_x86_call(remove_external_spte)(kvm, gfn, level, old_pfn);
	KVM_BUG_ON(ret, kvm);
}

@@ -485,7 +485,7 @@ static void handle_removed_pt(struct kvm *kvm, tdp_ptep_t pt, bool shared)
	}

	if (is_mirror_sp(sp) &&
	    WARN_ON(static_call(kvm_x86_free_external_spt)(kvm, base_gfn, sp->role.level,
	    WARN_ON(kvm_x86_call(free_external_spt)(kvm, base_gfn, sp->role.level,
						    sp->external_spt))) {
		/*
		 * Failed to free page table page in mirror page table and
@@ -538,12 +538,12 @@ static int __must_check set_external_spte_present(struct kvm *kvm, tdp_ptep_t sp
	 * external page table, or leaf.
	 */
	if (is_leaf) {
		ret = static_call(kvm_x86_set_external_spte)(kvm, gfn, level, new_pfn);
		ret = kvm_x86_call(set_external_spte)(kvm, gfn, level, new_pfn);
	} else {
		void *external_spt = get_external_spt(gfn, new_spte, level);

		KVM_BUG_ON(!external_spt, kvm);
		ret = static_call(kvm_x86_link_external_spt)(kvm, gfn, level, external_spt);
		ret = kvm_x86_call(link_external_spt)(kvm, gfn, level, external_spt);
	}
	if (ret)
		__kvm_tdp_mmu_write_spte(sptep, old_spte);