[Intel-gfx] [PATCH] drm/i915: Remove partial attempt to swizzle on pread/pwrite

Chris Wilson chris at chris-wilson.co.uk
Mon Jul 23 09:11:21 UTC 2018


Quoting Chris Wilson (2018-07-23 10:02:08)
> 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.
> 
> References: fe115628d567 ("drm/i915: Implement pwrite without struct-mutex")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>

gem_tiled_*pread* shows the problem on gdg, where we do have bit17
swizzling but take different paths through pread/pwrite leaving the
result incorrectly swizzled ~50% of the time.

The easiest way I see to force balance on the universal is to say if the
user wants to be stupid (mix pwrite/pread and tiling & swizzling), they
must pick up _all_ the pieces (rather than just take responsibility for
half the job). No one uses this interface, so punting the entire task to
userspace breaks nobody -- with the exception of teaching the igt tests
that what they ask cannot be given if !known_swizzling.
-Chris


More information about the Intel-gfx mailing list