• Daniel Vetter's avatar
    drm: mm: track free areas implicitly · ea7b1dd4
    Daniel Vetter authored
    The idea is to track free holes implicitly by marking the allocation
    immediatly preceeding a hole.
    
    To avoid an ugly corner case add a dummy head_node to struct drm_mm
    to track the hole that spans to complete allocation area when the
    memory manager is empty.
    
    To guarantee that there's always a preceeding/following node (that might
    be marked as hole_follows == 1), move the mm->node_list list_head to the
    head_node.
    
    The main allocator and fair-lru scan code actually becomes simpler.
    Only the debug code slightly suffers because free areas are no longer
    explicit.
    
    Also add drm_mm_for_each_node (which will be much more useful when
    struct drm_mm_node is embeddable).
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    ea7b1dd4
drm_mm.c 16.2 KB