[Intel-gfx] [PATCH 1/1] drm/i915/gtt: Mark newly created ppgtt dirty

Mika Kuoppala mika.kuoppala at linux.intel.com
Tue Sep 8 09:20:23 PDT 2015


We mark ppgtt dirty when vm area grows. As one needs
to allocate atleast one batchbuffer object before running
anything in vm space, this was considered adequate. However in
init, we run batch which doesn't need to allocate anything. This
is the render state initialization batch, part of context init.
Newly created ppgtt is not marked dirty as no allocations for it
are done. This results bb emission skip the pdps writing to hw,
and we start the batch with uninitialized (zero) pdp registers
causing gpu hangs early in the init.

Always mark newly created ppgtts dirty to ensure that pdps are
pushed before first bb.

Cc: Michel Thierry <michel.thierry at intel.com>
Cc: Arun Siluvery <arun.siluvery at linux.intel.com>
Cc: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Imre Deak <imre.deak at intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala at intel.com>
---
 drivers/gpu/drm/i915/i915_gem_gtt.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 8786281..41dcfca 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -2134,6 +2134,8 @@ int i915_ppgtt_init(struct drm_device *dev, struct i915_hw_ppgtt *ppgtt)
 		i915_init_vm(dev_priv, &ppgtt->base);
 	}
 
+	mark_tlbs_dirty(ppgtt);
+
 	return ret;
 }
 
-- 
2.1.4



More information about the Intel-gfx mailing list