On Fri, Jul 06, 2018 at 06:49:26PM +0100, Chris Wilson wrote: > clflush is an unserialised instruction and the IA manual strongly advises > you to serialise it with a mb. To be cautious, apply one before and one > after, my understanding is that we need one before and one after anyways, not just a matter of being cautious for being cautious.. Reviewed-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > so that it is serialised with both writes and reads without > worrying too much about the required direction. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > --- > .../drm/i915/selftests/i915_gem_coherency.c | 21 ++++++++++++++++--- > 1 file changed, 18 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c b/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c > index 294c58aba2c1..df44c302a9fe 100644 > --- a/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c > +++ b/drivers/gpu/drm/i915/selftests/i915_gem_coherency.c > @@ -42,11 +42,21 @@ static int cpu_set(struct drm_i915_gem_object *obj, > > page = i915_gem_object_get_page(obj, offset >> PAGE_SHIFT); > map = kmap_atomic(page); > - if (needs_clflush & CLFLUSH_BEFORE) > + > + if (needs_clflush & CLFLUSH_BEFORE) { > + mb(); > clflush(map+offset_in_page(offset) / sizeof(*map)); > + mb(); > + } > + > map[offset_in_page(offset) / sizeof(*map)] = v; > - if (needs_clflush & CLFLUSH_AFTER) > + > + if (needs_clflush & CLFLUSH_AFTER) { > + mb(); > clflush(map+offset_in_page(offset) / sizeof(*map)); > + mb(); > + } > + > kunmap_atomic(map); > > i915_gem_obj_finish_shmem_access(obj); > @@ -68,8 +78,13 @@ static int cpu_get(struct drm_i915_gem_object *obj, > > page = i915_gem_object_get_page(obj, offset >> PAGE_SHIFT); > map = kmap_atomic(page); > - if (needs_clflush & CLFLUSH_BEFORE) > + > + if (needs_clflush & CLFLUSH_BEFORE) { > + mb(); > clflush(map+offset_in_page(offset) / sizeof(*map)); > + mb(); > + } > + > *v = map[offset_in_page(offset) / sizeof(*map)]; > kunmap_atomic(map); > > -- > 2.18.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx