drm/i915: Park the GPU on module load
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 20 Sep 2018 16:13:43 +0000 (17:13 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 20 Sep 2018 19:43:30 +0000 (20:43 +0100)
Once we have flushed the first request through the system to both load a
context and record the default state; tell the GPU to park and idle
itself, putting itself immediately (hopefully at least) into a
powersaving state, and allowing ourselves to start from known state
after setting up all our bookkeeping.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180920161343.1117-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem.c

index b79362bbd97b38f7020a09088a2cdf49b9f3937f..db9688d149127dba2eeb384b29a3dc7f9df2f5db 100644 (file)
@@ -5419,6 +5419,14 @@ static int __intel_engines_record_defaults(struct drm_i915_private *i915)
 
        assert_kernel_context_is_current(i915);
 
+       /*
+        * Immediately park the GPU so that we enable powersaving and
+        * treat it as idle. The next time we issue a request, we will
+        * unpark and start using the engine->pinned_default_state, otherwise
+        * it is in limbo and an early reset may fail.
+        */
+       __i915_gem_park(i915);
+
        for_each_engine(engine, i915, id) {
                struct i915_vma *state;
                void *vaddr;