drm/i915/gt: Disable arbitration around Braswell's pdp updates
Braswell's pdp workaround is full of dragons, that may be being angered when they are interrupted. Let's not take that risk and disable arbitration during the update. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210111105735.21515-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
6a3daee1b3
commit
0da3f2500a
1 changed files with 10 additions and 1 deletions
|
|
@ -2539,6 +2539,14 @@ static int emit_pdps(struct i915_request *rq)
|
|||
* GPU hangs to forcewake errors and machine lockups!
|
||||
*/
|
||||
|
||||
cs = intel_ring_begin(rq, 2);
|
||||
if (IS_ERR(cs))
|
||||
return PTR_ERR(cs);
|
||||
|
||||
*cs++ = MI_ARB_ON_OFF | MI_ARB_DISABLE;
|
||||
*cs++ = MI_NOOP;
|
||||
intel_ring_advance(rq, cs);
|
||||
|
||||
/* Flush any residual operations from the context load */
|
||||
err = engine->emit_flush(rq, EMIT_FLUSH);
|
||||
if (err)
|
||||
|
|
@ -2564,7 +2572,8 @@ static int emit_pdps(struct i915_request *rq)
|
|||
*cs++ = i915_mmio_reg_offset(GEN8_RING_PDP_LDW(base, i));
|
||||
*cs++ = lower_32_bits(pd_daddr);
|
||||
}
|
||||
*cs++ = MI_NOOP;
|
||||
*cs++ = MI_ARB_ON_OFF | MI_ARB_ENABLE;
|
||||
intel_ring_advance(rq, cs);
|
||||
|
||||
intel_ring_advance(rq, cs);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue