On 16/06/15 21:38, Chris Wilson wrote: > On Tue, Jun 16, 2015 at 08:25:23PM +0100, Arun Siluvery wrote: >> + /* WaFlushCoherentL3CacheLinesAtContextSwitch:bdw */ >> + if (IS_BROADWELL(ring->dev)) { >> + struct drm_i915_private *dev_priv = ring->dev->dev_private; > > dev_priv = to_i915(ring->dev); > >> + >> + cmd[index++] = MI_LOAD_REGISTER_IMM(1); >> + cmd[index++] = GEN8_L3SQCREG4; >> + cmd[index++] = I915_READ(GEN8_L3SQCREG4) | >> + GEN8_LQSC_FLUSH_COHERENT_LINES; > > Read the reg once, it is clearer that way. > >> + >> + cmd[index++] = GFX_OP_PIPE_CONTROL(6); >> + cmd[index++] = PIPE_CONTROL_CS_STALL | >> + PIPE_CONTROL_DC_FLUSH_ENABLE; >> + cmd[index++] = 0; >> + cmd[index++] = 0; >> + cmd[index++] = 0; >> + cmd[index++] = 0; >> + >> + cmd[index++] = MI_LOAD_REGISTER_IMM(1); >> + cmd[index++] = GEN8_L3SQCREG4; >> + cmd[index++] = I915_READ(GEN8_L3SQCREG4) & >> + ~GEN8_LQSC_FLUSH_COHERENT_LINES; > -Chris What Chris said. But also, is it even meaningful to read a h/w register now (when?) and use its value as the basis for future LRI instructions? How (and when) does this register get its initial value, and does it get changed at any other time? If the value we put in the register is a run-time constant, there's really no need to read it back even once. .Dave. _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx