• Rick Edgecombe's avatar
    KVM: x86/tdp_mmu: Take a GFN in kvm_tdp_mmu_fast_pf_get_last_sptep() · c2f38f75
    Rick Edgecombe authored
    Pass fault->gfn into kvm_tdp_mmu_fast_pf_get_last_sptep(), instead of
    passing fault->addr and then converting it to a GFN.
    
    Future changes will make fault->addr and fault->gfn differ when running
    TDX guests. The GFN will be conceptually the same as it is for normal VMs,
    but fault->addr may contain a TDX specific bit that differentiates between
    "shared" and "private" memory. This bit will be used to direct faults to
    be handled on different roots, either the normal "direct" root or a new
    type of root that handles private memory. The TDP iterators will process
    the traditional GFN concept and apply the required TDX specifics depending
    on the root type. For this reason, it needs to operate on regular GFN and
    not the addr, which may contain these special TDX specific bits.
    
    Today kvm_tdp_mmu_fast_pf_get_last_sptep() takes fault->addr and then
    immediately converts it to a GFN with a bit shift. However, this would
    unfortunately retain the TDX specific bits in what is supposed to be a
    traditional GFN. Excluding TDX's needs, it is also is unnecessary to pass
    fault->addr and convert it to a GFN when the GFN is already on hand.
    
    So instead just pass the GFN into kvm_tdp_mmu_fast_pf_get_last_sptep() and
    use it directly.
    Signed-off-by: default avatarRick Edgecombe <rick.p.edgecombe@intel.com>
    Message-ID: <20240619223614.290657-9-rick.p.edgecombe@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    c2f38f75
tdp_mmu.c 54.8 KB