• Robin Murphy's avatar
    iommu/iova: Simplify cached node logic · 973f5fbe
    Robin Murphy authored
    
    
    The logic of __get_cached_rbnode() is a little obtuse, but then
    __get_prev_node_of_cached_rbnode_or_last_node_and_update_limit_pfn()
    wouldn't exactly roll off the tongue...
    
    Now that we have the invariant that there is always a valid node to
    start searching downwards from, everything gets a bit easier to follow
    if we simplify that function to do what it says on the tin and return
    the cached node (or anchor node as appropriate) directly. In turn, we
    can then deduplicate the rb_prev() and limit_pfn logic into the main
    loop itself, further reduce the amount of code under the lock, and
    generally make the inner workings a bit less subtle.
    Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    973f5fbe
iova.c 26.4 KB