• Chris Wilson's avatar
    drm/i915: Remove partial attempt to swizzle on pread/pwrite · b9d126e7
    Chris Wilson authored
    Our attempt to account for bit17 swizzling of pread/pwrite onto tiled
    objects was flawed due to the simple fact that we do not always know the
    swizzling for a particular page (due to the swizzling varying based on
    location in certain unbalanced configurations). Furthermore, the
    pread/pwrite paths are now unbalanced in that we are required to use the
    GTT as in some cases we do not have direct CPU access to the backing
    physical pages (thus some paths trying to account for the swizzle, but
    others neglecting, chaos ensues).
    
    There are no known users who do use pread/pwrite into a tiled object
    (you need to manually detile anyway, so why now just use mmap and avoid
    the copy?) and no user bug reports to indicate that it is being used in
    the wild. As no one is hitting the buggy path, we can just remove the
    buggy code.
    
    v2: Just use the fault allowing kmap() + normal copy_(to|from)_user
    v3: Avoid int overflow in computing 'length' from 'remain' (Tvrtko)
    
    References: fe115628 ("drm/i915: Implement pwrite without struct-mutex")
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Acked-by: default avatarKenneth Graunke <kenneth@whitecape.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190105120758.9237-1-chris@chris-wilson.co.uk
    b9d126e7
i915_gem.c 162 KB