• Ben Widawsky's avatar
    drm/i915: Convert execbuf code to use vmas · 27173f1f
    Ben Widawsky authored
    In order to transition more of our code over to using a VMA instead of
    an <OBJ, VM> pair - we must have the vma accessible at execbuf time. Up
    until now, we've only had a VMA when actually binding an object.
    
    The previous patch helped handle the distinction on bound vs. unbound.
    This patch will help us catch leaks, and other issues before we actually
    shuffle a bunch of stuff around.
    
    This attempts to convert all the execbuf code to speak in vmas. Since
    the execbuf code is very self contained it was a nice isolated
    conversion.
    
    The meat of the code is about turning eb_objects into eb_vma, and then
    wiring up the rest of the code to use vmas instead of obj, vm pairs.
    
    Unfortunately, to do this, we must move the exec_list link from the obj
    structure. This list is reused in the eviction code, so we must also
    modify the eviction code to make this work.
    
    WARNING: This patch makes an already hotly profiled path slower. The cost is
    unavoidable. In reply to this mail, I will attach the extra data.
    
    v2: Release table lock early, and two a 2 phase vma lookup to avoid
    having to use a GFP_ATOMIC. (Chris)
    
    v3: s/obj_exec_list/obj_exec_link/
    Updates to address
    commit 6d2b8885
    Author: Chris Wilson <chris@chris-wilson.co.uk>
    Date:   Wed Aug 7 18:30:54 2013 +0100
    
        drm/i915: List objects allocated from stolen memory in debugfs
    
    v4: Use obj = vma->obj for neatness in some places (Chris)
    need_reloc_mappable() should return false if ppgtt (Chris)
    Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
    [danvet: Split out prep patches. Also remove a FIXME comment which is
    now taken care of.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    27173f1f
i915_drv.h 71.5 KB