• Alexey Kardashevskiy's avatar
    KVM: PPC: Use preregistered memory API to access TCE list · da6f59e1
    Alexey Kardashevskiy authored
    VFIO on sPAPR already implements guest memory pre-registration
    when the entire guest RAM gets pinned. This can be used to translate
    the physical address of a guest page containing the TCE list
    from H_PUT_TCE_INDIRECT.
    
    This makes use of the pre-registrered memory API to access TCE list
    pages in order to avoid unnecessary locking on the KVM memory
    reverse map as we know that all of guest memory is pinned and
    we have a flat array mapping GPA to HPA which makes it simpler and
    quicker to index into that array (even with looking up the
    kernel page tables in vmalloc_to_phys) than it is to find the memslot,
    lock the rmap entry, look up the user page tables, and unlock the rmap
    entry. Note that the rmap pointer is initialized to NULL
    where declared (not in this patch).
    
    If a requested chunk of memory has not been preregistered, this will
    fall back to non-preregistered case and lock rmap.
    Signed-off-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
    Reviewed-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
    da6f59e1
book3s_64_vio_hv.c 9.85 KB