drm/i915: Update WaFlushCoherentL3CacheLinesAtContextSwitch
authorArun Siluvery <arun.siluvery@linux.intel.com>
Fri, 3 Jul 2015 13:27:31 +0000 (14:27 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 6 Jul 2015 12:37:39 +0000 (14:37 +0200)
commit9e00084750c0f0603ec8a6ff15e0bcf78b8202bd
tree869981e62bfcd33459eaec0b672ef45f92b7baa9
parent0bf73c361f986a04af332600bf06476c8f481c5b
drm/i915: Update WaFlushCoherentL3CacheLinesAtContextSwitch

In this WA we need to set GEN8_L3SQCREG4[21:21] and reset it after PIPE_CONTROL
instruction but there is a slight complication as this is applied in WA batch
where the values are only initialized once.
Dave identified an issue with the current implementation where the register value
is read once at the beginning and it is reused; this patch corrects this by saving
the register value to memory, update register with the bit of our interest and
restore it back with original value.

This implementation uses MI_LOAD_REGISTER_MEM which is currently only used
by command parser and was using a default length of 0. This is now updated
with correct length and moved to appropriate place.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Dave Gordon <david.s.gordon@intel.com>
Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_cmd_parser.c
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_lrc.c