• Daniel Vetter's avatar
    drm/i915: simplify shmem pwrite/pread slowpath handling · a39a6805
    Daniel Vetter authored
    The shmem paths for pwrite/pread used a clever trick to hold onto a
    single page when dropping the big dev->struct_mutex for the slowpath.
    But this ran the risk of reinstating (or not completely purging) the
    backing storage when dropping purgeable objects.
    
    Hence the code needed to keep track of whether it ever dropped the
    lock, and if it did, manually check whether it needs to re-purge the
    backing storage. But thanks to the pages pin count introduced in
    
    commit a5570178
    Author: Chris Wilson <chris@chris-wilson.co.uk>
    Date:   Tue Sep 4 21:02:54 2012 +0100
    
        drm/i915: Pin backing pages whilst exporting through a dmabuf vmap
    
    which allowed us to pin the backing storage and remove that page
    reference trick from shmem_pwrite/read in
    
    commit f60d7f0c
    Author: Chris Wilson <chris@chris-wilson.co.uk>
    Date:   Tue Sep 4 21:02:56 2012 +0100
    
        drm/i915: Pin backing pages for pread
    
    and
    
    commit 755d2218
    Author: Chris Wilson <chris@chris-wilson.co.uk>
    Date:   Tue Sep 4 21:02:55 2012 +0100
    
        drm/i915: Pin backing pages for pwrite
    
    we can now abolish this check. The slowpath cleanup completely
    disappears from pread, and for pwrite we're only left with the domain
    fixup in case someone moved the object out of the cpu domain from
    under us. A follow-on patch will optimize that a notch more.
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    a39a6805
i915_gem.c 109 KB