Skip to content

Commit fe7413e

Browse files
committed
Revert "KVM: x86/tdp_mmu: Add a helper function to walk down the TDP MMU"
Remove the helper and exports that were added to allow TDX code to reuse kvm_tdp_map_page() for its gmem post-populate flow now that a dedicated TDP MMU API is provided to install a mapping given a gfn+pfn pair. This reverts commit 2608f10. Reviewed-by: Rick Edgecombe <rick.p.edgecombe@intel.com> Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com> Reviewed-by: Kai Huang <kai.huang@intel.com> Reviewed-by: Yan Zhao <yan.y.zhao@intel.com> Tested-by: Yan Zhao <yan.y.zhao@intel.com> Tested-by: Kai Huang <kai.huang@intel.com> Link: https://patch.msgid.link/20251030200951.3402865-7-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
1 parent c1f173f commit fe7413e

File tree

3 files changed

+7
-36
lines changed

3 files changed

+7
-36
lines changed

arch/x86/kvm/mmu.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,6 @@ extern bool tdp_mmu_enabled;
257257
#define tdp_mmu_enabled false
258258
#endif
259259

260-
bool kvm_tdp_mmu_gpa_is_mapped(struct kvm_vcpu *vcpu, u64 gpa);
261-
int kvm_tdp_map_page(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code, u8 *level);
262260
int kvm_tdp_mmu_map_private_pfn(struct kvm_vcpu *vcpu, gfn_t gfn, kvm_pfn_t pfn);
263261

264262
static inline bool kvm_memslots_have_rmaps(struct kvm *kvm)

arch/x86/kvm/mmu/mmu.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4924,7 +4924,8 @@ int kvm_tdp_page_fault(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault)
49244924
return direct_page_fault(vcpu, fault);
49254925
}
49264926

4927-
int kvm_tdp_map_page(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code, u8 *level)
4927+
static int kvm_tdp_map_page(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code,
4928+
u8 *level)
49284929
{
49294930
int r;
49304931

@@ -4966,7 +4967,6 @@ int kvm_tdp_map_page(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code, u8 *level
49664967
return -EIO;
49674968
}
49684969
}
4969-
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_tdp_map_page);
49704970

49714971
long kvm_arch_vcpu_pre_fault_memory(struct kvm_vcpu *vcpu,
49724972
struct kvm_pre_fault_memory *range)

arch/x86/kvm/mmu/tdp_mmu.c

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1941,13 +1941,16 @@ bool kvm_tdp_mmu_write_protect_gfn(struct kvm *kvm,
19411941
*
19421942
* Must be called between kvm_tdp_mmu_walk_lockless_{begin,end}.
19431943
*/
1944-
static int __kvm_tdp_mmu_get_walk(struct kvm_vcpu *vcpu, u64 addr, u64 *sptes,
1945-
struct kvm_mmu_page *root)
1944+
int kvm_tdp_mmu_get_walk(struct kvm_vcpu *vcpu, u64 addr, u64 *sptes,
1945+
int *root_level)
19461946
{
1947+
struct kvm_mmu_page *root = root_to_sp(vcpu->arch.mmu->root.hpa);
19471948
struct tdp_iter iter;
19481949
gfn_t gfn = addr >> PAGE_SHIFT;
19491950
int leaf = -1;
19501951

1952+
*root_level = vcpu->arch.mmu->root_role.level;
1953+
19511954
for_each_tdp_pte(iter, vcpu->kvm, root, gfn, gfn + 1) {
19521955
leaf = iter.level;
19531956
sptes[leaf] = iter.old_spte;
@@ -1956,36 +1959,6 @@ static int __kvm_tdp_mmu_get_walk(struct kvm_vcpu *vcpu, u64 addr, u64 *sptes,
19561959
return leaf;
19571960
}
19581961

1959-
int kvm_tdp_mmu_get_walk(struct kvm_vcpu *vcpu, u64 addr, u64 *sptes,
1960-
int *root_level)
1961-
{
1962-
struct kvm_mmu_page *root = root_to_sp(vcpu->arch.mmu->root.hpa);
1963-
*root_level = vcpu->arch.mmu->root_role.level;
1964-
1965-
return __kvm_tdp_mmu_get_walk(vcpu, addr, sptes, root);
1966-
}
1967-
1968-
bool kvm_tdp_mmu_gpa_is_mapped(struct kvm_vcpu *vcpu, u64 gpa)
1969-
{
1970-
struct kvm *kvm = vcpu->kvm;
1971-
bool is_direct = kvm_is_addr_direct(kvm, gpa);
1972-
hpa_t root = is_direct ? vcpu->arch.mmu->root.hpa :
1973-
vcpu->arch.mmu->mirror_root_hpa;
1974-
u64 sptes[PT64_ROOT_MAX_LEVEL + 1], spte;
1975-
int leaf;
1976-
1977-
lockdep_assert_held(&kvm->mmu_lock);
1978-
rcu_read_lock();
1979-
leaf = __kvm_tdp_mmu_get_walk(vcpu, gpa, sptes, root_to_sp(root));
1980-
rcu_read_unlock();
1981-
if (leaf < 0)
1982-
return false;
1983-
1984-
spte = sptes[leaf];
1985-
return is_shadow_present_pte(spte) && is_last_spte(spte, leaf);
1986-
}
1987-
EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_tdp_mmu_gpa_is_mapped);
1988-
19891962
/*
19901963
* Returns the last level spte pointer of the shadow page walk for the given
19911964
* gpa, and sets *spte to the spte value. This spte may be non-preset. If no

0 commit comments

Comments
 (0)