• Zoltan Kiss's avatar
    xen/grant-table: Avoid m2p_override during mapping · 08ece5bb
    Zoltan Kiss authored
    The grant mapping API does m2p_override unnecessarily: only gntdev needs it,
    for blkback and future netback patches it just cause a lock contention, as
    those pages never go to userspace. Therefore this series does the following:
    - the original functions were renamed to __gnttab_[un]map_refs, with a new
      parameter m2p_override
    - based on m2p_override either they follow the original behaviour, or just set
      the private flag and call set_phys_to_machine
    - gnttab_[un]map_refs are now a wrapper to call __gnttab_[un]map_refs with
      m2p_override false
    - a new function gnttab_[un]map_refs_userspace provides the old behaviour
    
    It also removes a stray space from page.h and change ret to 0 if
    XENFEAT_auto_translated_physmap, as that is the only possible return value
    there.
    
    v2:
    - move the storing of the old mfn in page->index to gnttab_map_refs
    - move the function header update to a separate patch
    
    v3:
    - a new approach to retain old behaviour where it needed
    - squash the patches into one
    
    v4:
    - move out the common bits from m2p* functions, and pass pfn/mfn as parameter
    - clear page->private before doing anything with the page, so m2p_find_override
      won't race with this
    
    v5:
    - change return value handling in __gnttab_[un]map_refs
    - remove a stray space in page.h
    - add detail why ret = 0 now at some places
    
    v6:
    - don't pass pfn to m2p* functions, just get it locally
    Signed-off-by: default avatarZoltan Kiss <zoltan.kiss@citrix.com>
    Suggested-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
    Acked-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
    Acked-by: default avatarStefano Stabellini <stefano.stabellini@eu.citrix.com>
    Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    08ece5bb
p2m.c 34.7 KB