• Ankitprasad Sharma's avatar
    drm/i915: Use insert_page for pwrite_fast · 4f1959ee
    Ankitprasad Sharma authored
    In pwrite_fast, map an object page by page if obj_ggtt_pin fails. First,
    we try a nonblocking pin for the whole object (since that is fastest if
    reused), then failing that we try to grab one page in the mappable
    aperture. It also allows us to handle objects larger than the mappable
    aperture (e.g. if we need to pwrite with vGPU restricting the aperture
    to a measely 8MiB or something like that).
    
    v2: Pin pages before starting pwrite, Combined duplicate loops (Chris)
    
    v3: Combined loops based on local patch by Chris (Chris)
    
    v4: Added i915 wrapper function for drm_mm_insert_node_in_range (Chris)
    
    v5: Renamed wrapper function for drm_mm_insert_node_in_range (Chris)
    
    v5: Added wrapper for drm_mm_remove_node() (Chris)
    
    v6: Added get_pages call before pinning the pages (Tvrtko)
    Added remove_mappable_node() wrapper for drm_mm_remove_node() (Chris)
    
    v7: Added size argument for insert_mappable_node (Tvrtko)
    
    v8: Do not put_pages after pwrite, do memset of node in the wrapper
    function (insert_mappable_node) (Chris)
    
    v9: Rebase (Ankit)
    Signed-off-by: default avatarAnkitprasad Sharma <ankitprasad.r.sharma@intel.com>
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    4f1959ee
i915_gem.c 139 KB